有多行的getline(cin,input)? (C ++)

时间:2013-10-09 05:55:07

标签: c++ getline

我在这里遇到一个让我很难过的问题。所以,我必须阅读格式的内容[请阅读正文,以便更好地理解我的问题]:

               TITLE

The text is actually from a file being redirected 
to input stream via piping in linux bash. I cannot
use ifstream or anything other than some form of cin,
of which I believe getline to be the most useful. 

etc.

具体来说,给我带来困难的是TITLE和身体之间的空白。我似乎无法想办法解决使用getline(cin,string)的方法。

我最好的想法:

while(inputString.size() != 0)
    getline(cin,inputString);
    //process string

...被上面提到的空行抛出窗外。

任何想法,伙计们?

谢谢!

2 个答案:

答案 0 :(得分:5)

我认为这里的真正问题是你的逻辑。您的输入包含空行和非空行,因此如果要读取所有行,则不应该依赖行的长度。这可以通过测试std::getline返回的流来完成,如下所示:

while (getline(cin, inputString))
{
    // Do something with inputString...
}

循环逐行从cin读取,并在到达输入结束时停止。

答案 1 :(得分:0)

应该是

while(inputString.size() == 0)

当字符串的大小为0时,你继续阅读。

为了更加清晰,请尝试使用

while(inputString.empty())