イテレータを介して文字列を読み取ることが、直接読み取ることとどのように異なるのか正確にはわかりません。例として、以下のコードを検討してください。
#include <iostream>
#include <string>
#include <iterator>
using namespace std;
int main()
{
string str{istream_iterator<char>(cin),{}};
cout << str << endl;
string str1;
cin >> str1;
cout << str1 << endl;
}
それが何をするかは明らかで、str
を使用して読み取り、従来の方法istream_iterator
で読み取ります。str1
2 つの質問があります。
- 文字列反復子を介して読み取りを終了する唯一の方法は、
CTRL+D
(Unix) を送信することです。これもプログラムを終了させるため、2 番目の部分は実行されません。これを回避する方法はありますか? - イテレータで読み取る場合、空白 (スペース、\t、\n) を入力してもイテレータは読み続けます。この動作が を介して直接読み取るときの動作と異なるのはなぜ
cin >>
ですか?