我发现了几个类似的问题,需要逐行1,2读取文件,我试图按照它们进行操作,但是看来我的代码无法正常工作。
这是我的尝试:
输入文件
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
答案 0 :(得分:1)
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";
}