C++ コード行の簡単なスニペットを作成するたびに
std::string s;
cin >> s;
行全体を取得するのではなく、空白で止まるのを忘れていたので、自分を呪っています。
そして、思い出すgetline
と、私はいつも 2 つの種類について混乱してしまいます。
std::string s;
getline (std::cin, s);
と:
char cs[256];
std::cin.getline (cs, sizeof (cs));
データ型以外にこれら2つに実際に違いはありますか?
C++のやり方は前者であるべきだと私には思えます。とにかくヌル終了文字配列の代わりに実際の文字列を使用する必要があるとすれば、どのような状況で後者を使用しますか?
そして、入力は実際には入力ストリームの範囲である必要があるため、前者の部分ではないのはなぜistream
ですか?