2014-09-02 105 views
0

請問您可以看看下面的代碼。第二個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行的第一個元素。

回答

2

設置值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

相關問題