ostream_iterator和istream_iterator使用杂谈

我们在写Console程序时cout/cin,STL中提供了对应的iterator,可以更加灵活的使用。

ostream_iterator<string> oo(cout);

*oo="China\n";

++oo;

*oo="English\n";

增加了类型的检查,*oo赋值为整形vs会报错。

// *oo=1; error

ostream_iterator可以做为函数对象放到copy中,这样可以输出s的每个值。

string s="1234567890";

copy(s.begin(),s.end(),ostream_iterator<char>(cout,"\t"));

结果如下:

同样的istream_iterator也可以声明对象。

istream_iterator<int> intvecRead (cin);

int temp=*intvecRead;

cin.clear ( );

Ofstream可以输出到文件,代码如下。

ofstream ofs("11.txt");

if (!ofs.bad())

{

string sf;

cin>>sf;

ofs << sf << endl;

ofs.close();

}

ifstream 读出写入的数据

ifstream ifs("11.txt");

while (ifs!=NULL)

{

char str[10];

ifs>>str;

cout<<str<<endl;

}

时间: 2024-11-03 01:12:31

ostream_iterator和istream_iterator使用杂谈的相关文章

C++STL:流迭代器

流迭代器是一种迭代器适配器.istream_iterator用于读取输入流,ostream_iterator用于写输出流.这些迭代器将它们所对应的流视为特定类型的元素序列.使用流迭代器时,可以用泛型算法从流对象中读数据或将数据写入到流对象中. 流迭代器的构造函数如下: 流迭代器的基本操作如下: 1.流迭代器的定义. 流迭代器都是类模板:任何已定义输入操作符(>>操作符)的类型都可以定义istream_iterator,任何已定义输出操作符(<<操作符)的类型都可以定义ostream

C++primer第十一章 泛型算法

标准库容器定义的操作非常少.标准库没有给容器添加大量的功能函数,而是选择提供一组算法,这些算法大都不依赖特定的容器类型,是“泛型”的,可作用在不同类型的容器和不同类型的元素上. 因为它们实现共同的操作,所以称之为“算法”:而“泛型”指的是它们可以操作在多种容器类型上——不但可作用于 vector 或 list 这些标准库类型,还可用在内置数组类型.甚至其他类型的序列上. 11.1. 概述 假设有一个 int 的 vector 对象,名为 vec,我们想知道其中包含某个特定值.解决这个问题最简单的

chapter 16

Chapter 16 # string class Constructors (Page 952) string(const char *s) string(size_type n, char c) string(const string &str) string() string(const char *s,size_type n) template<class Iter> string(Iter begin, Iter end) string(const string &s

《C++ Primer》第II部分:C++标准库

<C++ Primer>第II部分:C++标准库 前言 把<C++ Primer>读薄系列笔记.本篇为第II部分C++标准库,包含全书第8-12章重难点: IO库 顺序容器 范型算法 关联容器 动态内存 修订版课后题解见GitHub仓库cpp-primer-workbook. IO库 IO类继承机制:ifstream和istringstream继承自istream,ofstream和ostringstream都继承自ostream 宽字符IO类:在函数和类型前加前缀w,如wcin.

《C++ Primer Plus》学习笔记10

<C++ Primer Plus>学习笔记10 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<&

C++ 基础知识回顾(string基础、智能指针、迭代器、容器类)

[1] string基础 [1.1] string 的构造 1 #include <iostream> 2 #include <string> 3 4 int main() 5 { 6 using namespace std; 7 8 cout << "1 --- string(const char* s):将string对象初始化为s指向的C风格字符串" << endl; 9 string one("benxintuzi_1&

c++ stream_iterator

(1) 包含在头文件#include <iterator>中 (2) 像使用其他iterator一样使用istream_iterator 和 ostream_iterator: istream_iterator<string> start_cin(cin);   //输入迭代器指向标准输入 istream_iterator<string> end_cin;           //输入迭代器没有指向时,默认指向文件尾(end-of-file) ostream_itera

SGI 2.9.1源码手札 stream Iterator:istream_iterator 和ostream_iterator 知识核心点

短期代码阅读主要基于SGI的STL,测试环境则是GCC_4.8.3_STL和VS_STL.暂时不去配置BOOST等库STL细节.待续 1.istream_iterator 输入流迭代器 1)没有operator=操作,因为只读,不可写,所以编译不支持.迭代器句柄保存当前已读取到的数据. _GLIBCXX_CONSTEXPR istream_iterator()       : _M_stream(0), _M_value(), _M_ok(false) {}       ///  Constru

stream_iterator、ostream_iterator 使用初探

STL定义了供输入及输出的iostream iterator类,称为 istream_iterator和ostream_iterator,分别支持单一型别的元素的读取和写入. 使用方法: 1.包含头文件: #include <iterator>  using namespace std;       2.像使用其他iterator一样使用istream_iterator和 ostream_iterator.如:  使用一对"连接至标准输入"的iterator用于标示元素范围