我正在尝试以下代码,
#include<iostream>
#include<string>
#include<iterator>
using namespace std;
ostream_iterator<string> oo(cout);
istream_iterator<string> ii(cin);
istream_iterator<string> eos;
int main()
{
**oo = "Some string ..\n";
string s1 = *ii;
cout << s1;
return 0;
}
它首先要求输入,然后输出与预期相反的输出。
怎么回事?
答案 0 :(得分:2)
根据标准,C ++11§24.6.1/ 1,
构造之后,每次使用++时,迭代器都会读取并存储一个T值。
因此,当全局变量初始化时,它实际上会在输入main
之前提示您输入。将ii
的声明移至main
的第二行可以解决问题。