我不明白通过迭代器读取字符串与直接读取字符串有何不同。为了举例说明,请考虑以下代码:
#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
通过传统方法读取。我有两个问题:
- 通过字符串迭代器结束读取的唯一方法是发送一个
CTRL+D
(Unix),它也会终止程序,因此第二部分不会执行。有没有办法解决? - 使用迭代器读取时,输入空格(空格、\t、\n)无关紧要,迭代器会继续读取。为什么这种行为与直接通过阅读时的行为不同
cin >>
?