重複の可能性あり:
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);