web-dev-qa-db-ja.com

std :: cin.getline()vs. std :: cin

いつstd::cin.getline()を使用する必要がありますか? std::cinとは何が違うのですか?

30
Simplicity

ドキュメントを読みましたか(例 http://www.cplusplus.com/reference/string/getline/ )?

基本的に、_std::cin_(またはより一般的には、_std::istream_)は、フォーマットされた入力を取得するために直接使用されます。 _int x; std::cin >> x;_。 std::cin.getline()は、単に生の_char *_バッファを埋めるために使用されます。

9

すでに他の人が大まかに言って(さらに良い)答えたように、getline()を使用して行全体(つまり_\n_で終わる文字列)と_cin>>var_を使用して互換性のある数を読み取りますvar(整数、浮動小数点、倍精度など)または単一のWordのタイプ。

この回答では、2つの方法を混合するときに生じる問題を強調したいと思います。行うとき:

_int a;
string s;
cin>>a;
getline(cin, s)
_

cinは行末の_\n_を残し、getline();によって読み取られます。 cin.ignore()を使用して、この問題を克服することができます。

_int a;
string s;
cin>>a;
cin.ignore();
getline(cin, s)
_
0
Francesco Boi