中断getline循环c ++

时间:2017-09-06 11:34:40

标签: c++ getline

我希望将字符串中的几行输入转换为向量(或数组)。我用getline()收集字符串,当收集完所有行后,我希望打破while循环。我试过" if(line.empty)"然后休息,但它不起作用。我做错了什么?

#include <iostream>
#include <vector>
#include <string>

using namespace std;

int main()
{
    vector<string> lines;
    string line; 
    while (getline(cin >> ws, line))
    {
        if (!line.empty())
        {
            lines.push_back(line);
        }
        if (line.empty())
            break;
    }  
    cout << "Done";
 return 0;
}

1 个答案:

答案 0 :(得分:0)

你可以尝试这样的东西,因为你正在尝试字符串然后长度函数更好地工作。代码......

#include <iostream>
#include <vector>
#include <string>

using namespace std;

int main()
{
    vector<string> lines;
    string line; 
    while (getline(cin >> ws, line))
    {
      if (!line.length())
            break;
            lines.push_back(line);

    }  
    for(int i=0;i<lines.size();i++)cout<<lines[i]<<endl;
 return 0;
}

如果您在阅读多个输入时遇到问题,请在循环开始时使用cin&gt;&gt; ws(空格)。

输入

asds  as
dsaf asd 
asdasd dsa 
fadsa asd
fasd sad 
afdas asd

输出

asds  as
dsaf asd 
asdasd dsa 
fadsa asd
fasd sad 
afdas asd