istream_iterator与ostream_iterator

注意点:

  • istream_iterator

     //	执行此句时会等待一个输入
     istream_iterator<int> iptr(cin), eof;
    
     //	执行此句后,相当于再等待一个新的输入
     iptr++;
    
  • ostream_iterator

     //	执行此句时不会产生输出
     //	需要一个输出的类型转换
     //	int → char 等
     ostream_iterator<int, char> optr(cout, "\n");
    

以上就是两者用法的区别。

这里提供两种istream_iterator的用法:

  • 输入直到eof
  • 输入n个内容

具体程序如下:

#include <iostream>
#include <iterator>
#include <vector>

using namespace std;

int main(){
	//  eof结束
	cout << "Enter numbers:\n";
	vector<int> v_num;
	istream_iterator<int> input_num(cin), eof;
	ostream_iterator<int, char> output_num(cout, " ");
	while (input_num != eof)
    	v_num.push_back(*input_num++);

	//	输出v_num内容
	cout << "\ninput numbers: \n";
	copy(v_num.begin(), v_num.end(), output_num);
	cout << endl << endl;

	//  输入n个字符串
	cin.clear();
	cout << "Enter n:\t";
	int n;
	cin >> n;
	cout << "\nEnter n strings:\n";
	vector<string> v_str;
	istream_iterator<string> input_str(cin);
	ostream_iterator<string, char> output_str(cout, "\n");
	v_str.push_back(*input_str);
	for (int i = 1; i < n; ++i)
	    v_str.push_back(*++input_str);

	//	输出v_str内容
	cout << "\ninput strings: \n";
	copy(v_str.begin(), v_str.end(), output_str);

	return 0;
}
  • EOF 式输入注意定义一个 eof;
    • EOF 输入结束之后需要 cin.clear( ) 才可以继续输入;
  • 输入n个字符串,定义 input_str(cin) 时需要一个输入;
    • 所以输入完之后应该先 push_back;
    • 之后 ++input_str 、push_back 执行 n − 1 n - 1 n1次即可;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值