您的位置:首页 > 编程语言 > C语言/C++

Cpp Primer<<学习IO标准库--面向对象的标准库_4

2015-06-04 21:47 429 查看

IO标准库提供的工具

istream(输入流)类型,提供输入操作。

ostream(输出流)类型,提供输出操作。

cin(see-in):读入标准输入的istream对象。

cout(see-out):写到标准输出的ostream对象。

cerr(see-err):输出标准错误的ostream对象。cerr常用语程序错误信息。

>>
操作符,用于从istream对象中读入输入。

<<
操作符,用于把输出写到ostream对象中。

getline函数,需要分别去istream类型和string类型的两个引用形参,其功能是从istream对象读取一个的单词,然后写入string对象中。

1. 面向对象的标准库

如果两种类型存在继承关系,则可以说一个类”继承”了其父类的行为——接口。C++中提及的父类成为基类(base class),而继承而来的类则成为派生类(derived class)。

IO类型在三个独立的头文件中定义:iostream定义读写控制窗口的类型,fstream定义读写已命名文件的类型,而sstream所定义的类型则用于读写存储在内存中string对象。fstream和sstream里所定义的每种类型都是从iostream头文件中定义的相关类型派生而来。



控制窗口流头文件iostream、磁盘文件流头文件fstream、字符串流头文件sstream。

函数形参有基类引用时,可以通过其派生类对象来进行调用。

三种类型流:控制台I/O流、字符串流和磁盘文件流,简称三刀流。

1.1国际字符的支持

以上所描述的流类的读写是由char类型组成的流。对wchar_t类型,标准库定义I/O输入输出读写宽字符对象为wcout、wcin、wcerr。基于流的wchar_t类型的类和对象在iostream中定义,宽字符文件流类型在fstream中定义,而宽字符stringstream则在sstream头文件中定义。

1.2 IO对象不可复制或赋值

[code]ofstream out1,out2;
out1 = out2; // error:cannot assign stream objects
// print function: parameter is copied
ofstream print(ofstream);
out2 = print(out2); // error cannot copy stream objects


只有支持复制的元素类型可以存储在vector(类模板)或其他容器类型里。

形参或函数的形参或返回类型也不能为流类型。如有需要传递或返回IO对象,则必须传递或返回指向该对象的指针或引用:

[code]ofstream  &print(ofstream&); // ok:takes a reference,oncopy
while(print(out2)) { /* . . . */ } // ok:pass reference to out2


对IO对象进行读写会改变它的状态,因此引用必须是非const的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: