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 !

問題: ご覧のとおり、getline は Hello World を出力するときに空白を表示します。「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 に答える