私はそれが全体のラインを取得するのではなく空白で停止し忘れたので2つの異なるgetline()関数が存在するのはなぜですか?
std::string s;
cin >> s;
は、私は自分自身を呪うC++コード行の迅速なスニペットを行うたびに。
その後、getline
を覚えるには、私は常に2つの品種へと混乱してしまう:
std::string s;
getline (std::cin, s);
と:
char cs[256];
std::cin.getline (cs, sizeof (cs));
は、実際にデータ型以外のこれら二つの違いはありますか?
私にはC++の方法が前者である必要があります。とにかく、代わりに ヌル終了文字配列の代わりに、実際の文字列を使用する必要があることを考えれば、どのような状況で私は後者を使用しますか?
入力は実際には入力ストリームの範囲でなければならないので、なぜ前者の部分はistream
ではありませんか?
私はこのフレーズが "疎結合"であると思っています。 "不十分に統合された"という言葉は否定的な意味を持っています。 std :: stringを必要とせずに 'std :: istream'を使わずに' std :: istream'を使うのは良いことだと思います。 –
@Charles:「提出」をする前に正反対の変更を加えたことを教えてもらえませんか?私は個人的にはより統一された標準ライブラリを好みました。 C++標準ライブラリは、 "有機的成長"の典型です。 –
@Charles:私は間違いなくiostreamsと文字列が結合していないと間違っていると思います。つまり、iostreamは基本的なレベルで文字列を操作することに依存しています。依存関係を減らすことは、文字列クラスでなければ、C-stringで動作するメンバ関数を使用できなくすることができます。 – Puppy