getline()无法进行二次通话

时间:2014-09-02 16:20:44

标签: c++ getline

请您查看以下代码。第二个while循环不起作用。如果我删除 第一个while循环它工作正常。我做错了什么?我确信它与getline()有关,但不知道如何。

现在代码已更新。 现在,向量“line”包含7个字符串,每个字符串都是逗号的长句,我想解析每个元素并将其存储在2d向量中,for循环只为行的第一个元素执行此操作。 例如; line = {“hell,peell,delll”,“peer,esdd,rsdd”,.....等等} 现在在矢量厄运的第一行我想要{地狱,佩尔,戴尔}和第二行 我想要{peer,sedd,rsdd}等等。 问题是for循环只存储std :: vector line的第一个元素。**

   #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;
    }

现在代码已更新。 现在,向量“line”包含7个字符串,每个字符串都是逗号的长句,我想解析每个元素并将其存储在2d向量中,for循环只为行的第一个元素执行此操作。 例如; line = {“hell,peell,delll”,“peer,esdd,rsdd”,.....等等} 现在在矢量厄运的第一行我想要{地狱,佩尔,戴尔}和第二行 我想要{peer,sedd,rsdd}等等。 问题是for循环只存储std :: vector line的第一个元素。

1 个答案:

答案 0 :(得分:2)

设置value1的值后,您需要将该值存储在ss中。

value1 = "hello,name,apple,sey";
ss.str(value1)