2

C++ を使い始めたばかりの CS 学生で、cin と getline() がデータを読み込む方法を理解するのに苦労しています。

string str_1 = "";

cin >> str_1;        // User enters "John(Enter)"

私の理解では、cin >> は入力バッファでデータを検索し、何も見つからない場合はユーザーにプロンプ​​トを表示します。次に、"John" を読み取り、バッファに改行 \n を残します。

その後 getline() が呼び出されると、\n が表示され、何も返されませんよね?

次に cin が呼び出された場合、期待どおりに動作しますが、なぜ cin は行がバッファーに戻って終了するのを認識しないのですか?

4

1 に答える 1

3

最初の「理解」について:いいえ、待機中の入力がない場合、宛先変数に書き込むことができるデータが存在するまで単にブロック(待機)します。プロンプトは表示されません。

そしてgetline電話に関しては、はい、それは正しいです。

また、文字列または数値を読み取るときの入力演算子は、先頭の空白>>をスキップします。

ざらざらした詳細に取り掛かりたい場合は、このstd::istreamリファレンスから始めて、そこから下に進むことをお勧めします.

于 2015-09-12T20:11:53.817 に答える