C++标准I/O库

      C++的输入/输出由标准库提供,标准库定义了一族类型,支持对文件和控制窗口等设备的读写,还定义了其他一些类型,使string对象能够像文件一样操作,从而使我们无需自己写代码就能实现数据与字符之间的转换。基本I/O类型在三个独立的头文件中定义:iostream定义读写控制窗口的类型,fstream定义读写文件的类型,sstream定义读写存储在内存中的string对象的类型,它们使用的命名空间为std。fstream和sstream里定义的每种类型都是从iostream头文件中定义的相关类型派生而来。它们的作用及派生关系如下图所示: 

IO标准库类型和头文件

头文件

类型

iostream

istream从流中读取

ostream写到流中去

iostream对流进行读写,由istreamostream派生

fstream

ifstream从文件中读取,由istream派生

ofstream写到文件中去,由ostream派生

fstream对文件进行读写,由iostream派生

sstream

istringstreamstring对象中读取,由istream派生

ostringstream写到string对象中去,由ostream派生

stringstreamstring对象进行读写,由iostream派生

IO标准库类型和头文件 

C++标准I/O库_第1张图片

IO标准库类型和头文件

    由于标准I/O类型均派生于istream或ostream类型,所以了解这两个类的用法基本上便可以举一反三了解所有类型的使用规律。所以大家如果想掌握它们的用法,可以从这两个类入手好好研究一下。另外,在使用标准I/O库的时候还有两点需要注意:

    1、对国际字符的支持

    为了支持宽字符数据的读写,标准库还定义了一组相关的I/O类型,以支持wchar_t类型。控制窗口读写的相应类型是wostream、wistream、wiostream,它们在iostream头文件中定义;控制文件读写的相应类型是wofsteam、wifstream、wfstream,它们在fstream头文件中定义;控制string对象读写的相应类型是wistringsteam、wostringstream、wstringstream,它们在sstream头文件中定义。注意到,这些类型都加上了“w”前缀,所以可以推知标准输入对象也变为了wcin,标准输出对象为wcout,而标准错误对象则是wcerr。

    2、I/O对象不可进行复制或赋值

    这便意味着,标准I/O类型不能放在vector或者其他容器当中,因为只有支持复制的元素类型可以存储在vector或其他容器类型里;函数形参或返回类型也不能单纯是流类型,而只能是流对象的引用类型。

你可能感兴趣的:(C++,String,IO,vector,存储,iostream)