C++ 我能';t打印二维向量
所以我一直在尝试使用forloop打印2D数组 但是如果我打印出来看到结果 (每个数字代表每一行) 1C++ 我能';t打印二维向量,c++,C++,所以我一直在尝试使用forloop打印2D数组 但是如果我打印出来看到结果 (每个数字代表每一行) 1 12 123 1234 12345 123456 1234567 12345678 123456789 它不是逐行打印,而是打印第一行,打印时添加额外的行 我以为是串流问题 所以我试过了 clear; empty; s.str(""); stringstream().swap(s); 但这些都不起作用 while(getline(file1,line1)) {
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;
}
while(getline(file1,line1))
{
钢绞线(1号线);
while(getline(s,word,,'))
{
学生。推回(单词);
}
堆叠。推回(学生);
s、 str(“”);
}
file1.close();
对于(int i=0;i cout免责声明:此答案基于猜测,因为您没有提供太多相关信息。我假设如下:
学生是一个std::vector
堆栈是一个std::vector
那么您的问题是,您没有清除student
。只需在内部循环之前添加对student.clear()
的调用,您就可以了
更详细的解释:在内部循环中,您将一个新字符串推送到student
,然后推送(从而复制)student
进入stack
。在下一次迭代中,您将另一个值推入student
。它现在包含两个值,您将一个带有两个值的向量推入stack
。依此类推。看看您的问题并没有传达问题输出的所有相关属性。您必须找到一个方法使它变得更清晰。考虑改变你的程序以制作更短的输出线,这将有助于使不想要的输出的累加方面更清楚。这里来看看格式化提示,你需要达到的是A。我做了一些改进外观,但你需要工作的清晰度。在输出中描述不需要的模式。在进行MRE时。@Yunnosch是的,但在步骤1中调用了str.erase()
,在读取之前清除字符串。