0

このコードは無限に実行されます。

copy(istream_iterator<char>(cin), istream_iterator<char>(), back_inserter(buff));

私が期待していた動作は、Enter キーを押すと停止することです。
しかし、そうではありません。
buff は文字のベクトルです。

4

1 に答える 1

2

キーボードで入力していると思います。

エンターキーは、ストリームの終了を意味するものではありません。それは、シンの観点からは単なる別のキャラクターです。これを実現するには、EOFを送信する必要があります(WindowsではCtrl+ Z、Unix / Macでは+)。EnterCtrlD

ちなみに、これはコンソールから文字を読み取る通常の方法ではありません。これは非常に非効率的であり(各文字をistream_iterator呼び出すoperator>>)、空白で誤動作します。データ入力の行を読み取るには、getline代わりにを使用します。

于 2010-05-09T00:59:42.730 に答える