当前位置:C++技术网 > 资讯 > 如何结束istream_iterator的输入

如何结束istream_iterator的输入

更新时间:2016-03-19 20:44:00浏览次数:1+次

先看代码:
#include "iostream"
#include "algorithm"
#include "vector"
#include "iterator"
#include "string"
#include "windows.h"

using namespace std;

int main()
{
vector<string> data;
istream_iterator<string> eof;
copy(istream_iterator<string>(cin),eof,back_inserter(data));

reverse(data.begin(),data.end());
copy(data.begin(),data.end(),ostream_iterator<string>(cout," "));
system("pause");
return 0;
}
看看调试结果:


在这里,我们通过发生,我们的结束界定符就是空格,可是当你输入空格的时候,却不能结束输入,这是为什么?我也不懂,查了资料,也没人说清楚。打算待会看看STL源码解析。那么要怎么结束空格呢?有是有一种办法:

输入之后,换行而后输入Ctrl+z就行了。
其实我们可以换一种代码:
#include "iostream"
#include "vector"
#include "iterator"
#include "windows.h"
#include "string"

using namespace std;

int main()
{
istream_iterator<string> in(cin);
ostream_iterator<string> out(cout," ");

while (in!=istream_iterator<string>())
{
*out=*in;
out++;
in++;
}
cout<<endl;
system("pause");
return 0;
}
这样也行哦。