getline()不能用于第二个调用
问题描述:
请问您可以看看下面的代码。第二个while循环不起作用。如果我删除 第一个while循环它工作正常。我做错了什么?我相信它与getline()
有关,但不知道如何。getline()不能用于第二个调用
现在代码已更新。 现在矢量“行”包含7个字符串,每个都是一个逗号的长句子,我想分析每个元素并将其存储在2d向量中,for循环只是为线的第一个元素执行此操作。例如, ; line = {“hell,peell,delll,”,“peer,esdd,rsdd”,.....等等} 现在在向量厄运的第一行我想{地狱,皮尔,delll}和在第二行 我想{peer,sedd,rsdd}等等。 问题是for循环只存储的std ::矢量线的第一个元素。**
#include<iostream>
#include<fstream>
#include<sstream>
#include<vector>
using namespace std;
int main()
{
ifstream moodle("moodlelist.csv");
ifstream official("officiallist.csv");
vector<string> line;
vector<vector<string>> mood;
string value1;
string value2;
istringstream ss(value1);
int col=0;
while (official.good())
{
getline (official, value1);
line.push_back(value1);
}
for (int i=0;i<line.size();i++)
{
value1=line[i];
cout<<value1<<endl;
ss.str(value1);
while(getline(ss,value2, ','))
{
row.push_back(value2);
}
mood.push_back(row);
row.clear();
}
return 0;
}
代码现在被更新。 现在矢量“行”包含7个字符串,每个都是一个逗号的长句子,我想分析每个元素并将其存储在2d向量中,for循环只是为线的第一个元素执行此操作。例如, ; line = {“hell,peell,delll,”,“peer,esdd,rsdd”,.....等等} 现在在向量厄运的第一行我想{地狱,皮尔,delll}和在第二行 我想{peer,sedd,rsdd}等等。 问题在于for循环只存储了std :: vector行的第一个元素。
答
设置值value1
后,您需要将该值存储在ss
中。
value1 = "hello,name,apple,sey";
ss.str(value1)
非常感谢你 – user144905 2014-09-02 16:28:00
一两件事,我没有你所说的话,它的工作,但现在我想提出的第二个而循环回路INT一个,这仅适用于第一次迭代。 – user144905 2014-09-02 16:53:59
@ user144905我不明白......你能改述吗? – randomusername 2014-09-02 16:55:20