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) 
+0

非常感谢你 – user144905 2014-09-02 16:28:00

+0

一两件事,我没有你所说的话,它的工作,但现在我想提出的第二个而循环回路INT一个,这仅适用于第一次迭代。 – user144905 2014-09-02 16:53:59

+0

@ user144905我不明白......你能改述吗? – randomusername 2014-09-02 16:55:20