-1

我正在尝试以下代码,

#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;
}

它首先要求输入,然后打印输出,与预期相反。

怎么来的?

4

1 回答 1

2

根据标准,C++11 §24.6.1/1,

构造完成后,每次使用 ++ 时,迭代器都会读取并存储一个 T 的值。

因此main,在初始化全局变量时,它实际上是在输入之前提示您输入。将声明ii移至第二行main可解决问题。

于 2013-05-04T06:03:50.163 回答