返回信息流c++ primary 中文版的输出流迭代器的一个例子。第四版 第351页。11.3.2 节 iostream迭代器。
将输入流迭代器复制给输出流迭代器,输出流迭代器绑定到cout输出。
代码很短,直接贴了,见谅。
#include<iterator>
#include<fstream>
using namespace std;
int main()
{
istream_iterator<int> cin_iter(cin);
istream_iterator<int> end_of_stream;
ostream_iterator<int> cout_iter(cout," ");//输入1 2 3 ctrl+z 为什么只输出1 ?
while(cin_iter != end_of_stream){
*cout_iter++ = *cin_iter++;
}
system("pause");
return 0;
}
先谢过了。
这是一条镜像帖。来源:北邮人论坛 / cpp / #43218同步于 2010/9/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
【求助】问 ostream_iterator.
lvweihao
2010/9/2镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
应该在输入CTRL+Z之前先回车。下面是在网上搜的资料,不知道有用吧。
输入缓冲是行缓冲。当从键盘上输入一串字符并按回车后,这些字符会首先被送到输入缓冲区中存储。每当按下回车键后,cin就会检测输入缓冲区中是否有了可读的数据。cin还会对键盘上是否有作为流结束标志的 Ctrl+Z 或者 Ctrl+D 键按下作出检查,其检查的方式有两种:阻塞式以及非阻塞式。
阻塞式检查方式指的是只有在回车键按下之后才对此前是否有 Ctrl+Z 组合键按下进行检查,非阻塞式样指的是按下 Ctrl+z 之后立即响应的方式。如果在按 Ctrl+D 之前已经从键盘输入了字符,则 Ctrl+z的作用就相当于回车,即把这些字符送到输入缓冲区供读取使用,此时Ctrl+z不再起流结束符的作用。如果按 Ctrl+z 之前没有任何键盘输入,则 Ctrl+z 就是流结束的信号。
今天什么都没改,一试就可以了,好诡异。昨晚vs和dev-c++都不行。。。
先 ctrl+Z 再回车。
【 在 bullet 的大作中提到: 】
: 应该在输入CTRL+Z之前先回车。下面是在网上搜的资料,不知道有用吧。
: 输入缓冲是行缓冲。当从键盘上输入一串字符并按回车后,这些字符会首先被送到输入缓冲区中存储。每当按下回车键后,cin就会检测输入缓冲区中是否有了可读的数据。cin还会对键盘上是否有作为流结束标志的 Ctrl+Z 或者 Ctrl+D 键按下作出检查,其检查的方式有两种:阻塞式以及非阻塞式。
: 阻塞式检查方式指的是只有在回车键按下之后才对此前是否有 Ctrl+Z 组合键按下进行检查,非阻塞式样指的是按下 Ctrl+z 之后立即响应的方式。如果在按 Ctrl+D 之前已经从键盘输入了字符,则 Ctrl+z的作用就相当于回车,即把这些字符送到输入缓冲区供读取使用,此时Ctrl+z不再起流结束符的作用。如果按 Ctrl+z 之前没有任何键盘输入,则 Ctrl+z 就是流结束的信号。
: ...................
同疑问,怀疑可能是输出流刷新的问题。“ ” 不会刷新输出流,endl会,但又不能直接替换。继续求解ing。。。
【 在 jjwdy0508 的大作中提到: 】
: 我DEV C++下是
: 1 2 3
: 1 2 ^Z
: ...................