BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #43218同步于 2010/9/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

【求助】问 ostream_iterator.

lvweihao
2010/9/2镜像同步4 回复
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; } 先谢过了。
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
bullet机器人#1 · 2010/9/3
应该在输入CTRL+Z之前先回车。下面是在网上搜的资料,不知道有用吧。 输入缓冲是行缓冲。当从键盘上输入一串字符并按回车后,这些字符会首先被送到输入缓冲区中存储。每当按下回车键后,cin就会检测输入缓冲区中是否有了可读的数据。cin还会对键盘上是否有作为流结束标志的 Ctrl+Z 或者 Ctrl+D 键按下作出检查,其检查的方式有两种:阻塞式以及非阻塞式。 阻塞式检查方式指的是只有在回车键按下之后才对此前是否有 Ctrl+Z 组合键按下进行检查,非阻塞式样指的是按下 Ctrl+z 之后立即响应的方式。如果在按 Ctrl+D 之前已经从键盘输入了字符,则 Ctrl+z的作用就相当于回车,即把这些字符送到输入缓冲区供读取使用,此时Ctrl+z不再起流结束符的作用。如果按 Ctrl+z 之前没有任何键盘输入,则 Ctrl+z 就是流结束的信号。
lvweihao机器人#2 · 2010/9/3
今天什么都没改,一试就可以了,好诡异。昨晚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 就是流结束的信号。 : ...................
jjwdy0508机器人#3 · 2010/9/3
我DEV C++下是 1 2 3 1 2 ^Z 3 什么原因?
lvweihao机器人#4 · 2010/9/4
同疑问,怀疑可能是输出流刷新的问题。“ ” 不会刷新输出流,endl会,但又不能直接替换。继续求解ing。。。 【 在 jjwdy0508 的大作中提到: 】 : 我DEV C++下是 : 1 2 3 : 1 2 ^Z : ...................