このコードは無限に実行されます。
copy(istream_iterator<char>(cin), istream_iterator<char>(), back_inserter(buff));
私が期待していた動作は、Enter キーを押すと停止することです。
しかし、そうではありません。
buff は文字のベクトルです。
このコードは無限に実行されます。
copy(istream_iterator<char>(cin), istream_iterator<char>(), back_inserter(buff));
私が期待していた動作は、Enter キーを押すと停止することです。
しかし、そうではありません。
buff は文字のベクトルです。
キーボードで入力していると思います。
エンターキーは、ストリームの終了を意味するものではありません。それは、シンの観点からは単なる別のキャラクターです。これを実現するには、EOFを送信する必要があります(WindowsではCtrl+ Z、Unix / Macでは+)。EnterCtrlD
ちなみに、これはコンソールから文字を読み取る通常の方法ではありません。これは非常に非効率的であり(各文字をistream_iterator
呼び出すoperator>>
)、空白で誤動作します。データ入力の行を読み取るには、getline
代わりにを使用します。