【问题标题】:Trouble with C++ Vector of Vectors向量的 C++ 向量的问题
【发布时间】:2016-11-28 14:45:14
【问题描述】:

我正在尝试逐行读取 txt 文件,其中每行可能有不同数量的元素。我找到了向量的向量,但我不明白为什么我的只写入向量中的第一个向量。其他都是空的。

这是读取数据的代码的sn-p:

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();
}

【问题讨论】:

  • while(filein &gt;&gt; connect) 将在读取整个文件后停止。
  • 那么我该如何调整以在每一个新行处停止?
  • 只是一般性评论 - 非常值得研究在代码编辑器中使用 clang-format。您可以通过一个按键将整个文件格式化为您喜欢的编码风格。说真的,这可能是我最喜欢用 C++ 编程的地方。

标签: c++ file vector


【解决方案1】:

您可以使用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);
    }
} 

【讨论】:

  • 谢谢!我没有听说过字符串流。这非常有效。我很高兴能学到更多新东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-09
  • 2011-03-07
  • 1970-01-01
  • 2021-09-10
  • 2013-05-12
相关资源
最近更新 更多