getline() は、いくつかの入力後に使用すると機能しません [重複] 質問する

getline() は、いくつかの入力後に使用すると機能しません [重複] 質問する

重複の可能性あり:
getline() に関するヘルプが必要です

getline()いくつかの入力を行った後に使用すると、機能しません。

#include<iostream>
using namespace std;

main()
{
string date,time;
char journal[23];


cout<<"Date:\t";
cin>>date;
cout<<"Time:\t";
cin>>time;

cout<<"Journal Entry:\t";
cin.getline(journal,23);


cout<<endl;
system("pause");
}

入力の上に使用するとgetline()、機能します。

cout<<"Journal Entry:\t";
cin.getline(journal,23);
cout<<"Date:\t";
cin>>date;
cout<<"Time:\t";
cin>>time;

理由は何でしょうか?

ベストアンサー1

文字は、(n - 1) 文字が抽出されるか、区切り文字 (このパラメータが指定されている場合は delimiter、指定されていない場合は '\n') が見つかるまで抽出されます。入力シーケンスでファイルの末尾に到達した場合、または入力操作中にエラーが発生した場合も、抽出は停止します。

cin.getline()が入力から読み取る場合、入力ストリームに改行文字が残っているため、C 文字列は読み取られません。cin.ignore()を呼び出す前にを使用してくださいgetline()

cout<<"Journal Entry:\t";
cin.ignore();
cin.getline(journal,23);

おすすめ記事