いつstd::cin.getline()
を使用する必要がありますか? std::cin
とは何が違うのですか?
ドキュメントを読みましたか(例 http://www.cplusplus.com/reference/string/getline/ )?
基本的に、_std::cin
_(またはより一般的には、_std::istream
_)は、フォーマットされた入力を取得するために直接使用されます。 _int x; std::cin >> x;
_。 std::cin.getline()
は、単に生の_char *
_バッファを埋めるために使用されます。
すでに他の人が大まかに言って(さらに良い)答えたように、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)
_