将不相等的线读入向量的向量

  • 本文关键字:向量 不相等 c++
  • 更新时间 :
  • 英文 :


>我发现了几个类似的问题,需要逐行读取文件,我试图遵循它们,但似乎我的代码无法正常工作。

这是我的尝试:

输入文件

0 3 5 7
1 5 6 7 9
2 3 6 7 8
3 0 2 7 9
4 6 8
5 0 1 7
6 1 2 4 9
7 0 1 2 3 5 8
8 2 4 7
9 1 3 6

代码

int main() {
    std::vector<std::vector<int>> a;
    a.resize(10);
    std::string filename = "data/a.adjlist";
    std::ifstream file(filename);
    if (file.is_open()) {
        std::string line;
        int counter = 0;
        while (getline(file, line)) {
            printf("%s n", line.c_str());
            std::istringstream iss(line);
            int value;
            while(iss >> value) 
                a[counter].push_back(value);
            counter ++;
        }
    }
    file.close();
    for (int i=0; i<a.size(); i++) {
        for (int j=0; j<a[0].size(); j++) {
            cout << a[i][j] << " ";
        }
        cout << "n";
    }
}

输出

0 3 5 7
1 5 6 7
2 3 6 7
3 0 2 7
4 6 8 7
5 0 1 7
6 1 2 4
7 0 1 2
8 2 4 7
9 1 3 6

for (int j=0; j<a[0].size() ; j++)

应该是

for (int j=0; j<a[i].size(); j++)

更安全,无需摆弄索引:

   for (auto& aa : a) {
        for (auto& b : aa) {
            cout << b << " ";
        }
        cout << "n";
    }

最新更新