-2

私は C++ を使用しており、次のようなファイル行から読み取っています。

D x1 x2 x3 y1

私のコードは次のとおりです。

struct gate {
    char name;
    vector <string> inputs;
    string output;
};

main関数内:

vector <gate> eco;

int c=0;
int n=0;
int x = line.length();
while(netlist[c][0])
{
    eco.push_back(gate());
    eco[n].name = netlist[c][0];
    eco[n].output[0] = netlist[c][x-2];
    eco[n].output[1] = netlist[c][x-1];
}

wherenetlistは、ファイルをコピーした 2D 配列です。

入力をループして vector に保存するには助けが必要ecoです。

4

1 に答える 1

3

2D配列の意味はよくわかりませんが、冗長だと思います。次のコードを使用する必要があります。

ifstream somefile(path);
vector<gate> eco;
gate g;

while (somefile >> g)
    eco.push_back(g);

// or, simpler, requiring #include <iterator>
vector<gate> eco(std::istream_iterator<gate>(somefile),
                 std::istream_iterator<gate>());

そしてoperator >>あなたのタイプに適切にオーバーロードしますgate

std::istream& operator >>(std::istream& in, gate& value) {
    // Error checking … return as soon as a failure is encountered.
    if (not (in >> gate.name))
        return in;

    gate.inputs.resize(3);
    return in >> gate.inputs[0] >>
                 gate.inputs[1] >>
                 gate.inputs[2] >>
                 gate.output;
}
于 2013-03-11T14:11:26.657 に答える