我正在使用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];
}
其中netlist
是一个2D数组,我已将文件复制到。
我需要帮助来循环输入并将它们保存在向量eco
。
答案 0 :(得分: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;
}