我无法打印2D矢量

时间:2019-10-06 07:07:02

标签: c++

所以我一直在尝试使用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

1 个答案:

答案 0 :(得分:0)

免责声明:由于您没有提供太多相关信息,因此此答案是基于疯狂的猜测。我假设以下情况:

  1. 学生是std::vector<string>
  2. 堆栈是std::vector<std::vector<string>>

那么您的问题是,您没有清除student。只需在内循环之前添加对student.clear()的调用,就可以了。

更详细的说明:在内部循环中,将新字符串推入student,然后将student推入(从而复制)到stack中。在下一次迭代中,您将另一个值推入student中。现在,它包含两个值,然后将具有两个值的向量推入stack中。依此类推。