2016-11-28 134 views
1

我正在尝试逐行阅读一个txt文件,其中每行可能有不同数量的元素。我找到了向量的矢量,但我无法弄清楚为什么我只写入向量中的第一个向量。所有其他人都是空的。C++矢量矢量故障

这里的代码在数据读取的代码片段:

vector<vector<int>> all(numverts); 
for (int i = 0; i <= (numverts - 1); i++) { 
    // reads a line of data 
    vector<int> edges; 
    int connect; 
    while (filein >> connect) { 
    edges.push_back(connect); 
    } 
    all[i] = edges; 
    edges.clear(); 
} 
+3

'while(filein >> connect)'将在整个文件被读取后停止。 –

+0

那么,如何调整以停止每条新线? –

+1

只是一个普遍的评论 - 它非常值得在代码编辑器中使用'clang-format'。您可以用一个按键将整个文件格式化为您喜欢的编码风格。认真的说,这可能是我在C++编程中最喜欢的事情。 –

回答

5

您可以使用getlinestringstream。这样,文件的每一行都被分开读取,然后输入到矢量中(通过串流)。

vector<vector<int> > all(numverts); 
for(int i = 0; i < numverts; i++) 
{ 
    std::string line; 
    std::getline(filein, line); 
    std::stringstream lineStream(line); 
    int connect; 
    while(lineStream >> connect) 
    { 
     all[i].push_back(connect); 
    } 
} 
+1

谢谢!我没有听说过stringstream。这工作完美。我很高兴能够学习更多新东西。 –