4

对于我的代码,我必须从键盘读取多行。我在这里的代码可以完成这项工作。这是代码:

#include <iostream>

using namespace std;

int main()
{

string input;
string line;

cout<< "Enter the input line" << endl;

while (getline(cin, line))
{
    if (line == "^D")
        break;

    input += line;
}

 cout<< "The input entered was: "<<endl;
 cout<< input<< endl;

}

运行后我得到的输出。

Enter the input line
Hello
World !
The input entered was: 
HelloWorld !

问题:如您所见,在打印 Hello World 时,getline 确实给出了一个空格。如何确保它被打印为“Hello World!” 而不是“HelloWorld!” 当有 n 个换行符时会发生这种情况。它与前一行字符串连接并打印。

4

2 回答 2

5

尝试这个,

while (getline(cin, line)) {
    if (line == "^D")
        break;

    input += " " + line;
}
于 2013-05-13T07:05:10.510 回答
3

只需使用 cin.ignore(); 在获取字符串输入示例之前:

cin.ignore();
string s;
getline(cin,s);
于 2019-05-11T16:05:03.470 回答