1. ホーム
  2. c++

[解決済み】getline()が何らかの入力の後に使用されると動作しない 【重複あり

2022-01-18 22:13:01

質問

<ブロッククオート

重複の可能性があります。
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;

その理由は何でしょうか?

解決方法は?

<ブロッククオート

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

いつ cin.getline() は入力から読み取るとき、入力ストリームに改行文字が残っているので、c-stringを読み取らない。使用方法 cin.ignore() を呼び出す前に getline() .

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