所以我一直在尝试使用forloop打印2D数组
但是如果我打印并看到结果 (每个数字都是每行)
1
12
123
1234
12345
123456
1234567
12345678
123456789
它不是逐行打印其打印的第一行,而是在打印时在其上添加多余的行。
我认为这是字符串流问题 所以我尝试了
clear; empty; s.str(""); stringstream().swap(s);
但是这些都不起作用。
while(getline(file1,line1))
{
stringstream s(line1);
while(getline(s,word,','))
{
student.push_back(word);
}
stack.push_back(student);
s.str("");
}
file1.close();
for (int i = 0; i < stack.size(); i++)
{
for (int j = 0; j < stack[i].size(); j++)
{
cout << stack[i][j];
}
cout << endl;
}
这是我从csv文件复制信息的编码。
我希望输出为
1
2
3
4
5
6
7
8
9
答案 0 :(得分:0)
免责声明:由于您没有提供太多相关信息,因此此答案是基于疯狂的猜测。我假设以下情况:
std::vector<string>
std::vector<std::vector<string>>
那么您的问题是,您没有清除student
。只需在内循环之前添加对student.clear()
的调用,就可以了。
更详细的说明:在内部循环中,将新字符串推入student
,然后将student
推入(从而复制)到stack
中。在下一次迭代中,您将另一个值推入student
中。现在,它包含两个值,然后将具有两个值的向量推入stack
中。依此类推。