从文件读入矢量

时间:2013-03-11 14:05:54

标签: c++ vector

我正在使用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

1 个答案:

答案 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;
}