第12章C++输入输出流
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
12.4.5 设置填充字符
用户在编程时,还可以在输出流的数据中添加相应的 填充数据。实现该功能的操纵算子是“setfill”。其具体的功 能是设置填充数据,该操纵算子的原型如下所示: 01 setfill(char); //设置填充数据的操纵算 子 在代码中,该操纵算子含有一个参数,表示将设置的 填充字符数据。例如,用户在实例代码中,使用该算子对输 出流中的数据填充符号“*”。具体的代码如下所示: 【本例代码位置:源文件\12\设置填充字符\设置填充 字符.cpp】
12.2.2 获取输入流
在输入流类中,用户还可以通过移位标识符“>>”对输 入流进行获取。这种数据的获取方式同样是以换行符“/n” 作为结束标志的。 01 …… //省略部分代码 02 class A 03 { 04 public: 05 void operator>>( char ch ); //定义重载函 数 06 void operator>>( int m ); 07 …… //省略部分代码
12.5.3
格式化输出文件
用户打开文件以后,就可以对指定的文件进行格式化 输出了,即从文件中读取文件数据。那么,用户就可以在程 序中使用相关的方法对文件数据进行格式化后,进行输出。 在本小节中,将向用户介绍如何对文件进行格式化后,进行 输出的相关方法。 通常情况下,用户可以使用文件流类“ifstream”实现 这个功能。在该类中,成员函数“getline”和“read”都可 以实现将文件中的数据进行读取并进行输出。这两个成员函 数的原型如下所示: 01 istream& getline( char* pch, int nCount, char delim = '\n'); //读取整行文件数据 02 istream& read( char* pch, int nCount ); //读取文件数据 这两个成员函数的主要作用都是从用户指定的文件中 读取数据,并将读取到的数据保存在指定的数据缓冲区中。
12.2 输入流
在前面的小节中,已经向用户介绍了与C++输入流相关 的基础知识。实际上,在输入流类中,还包含了很多相关的 成员函数,这些成员函数的功能也是非常强大的。在本节中 ,将向用户介绍这些函数的使用方法及其功能。
12.2.1 输入流读取运算符
通过前面知识的学习,用户已经掌握了输入流类中获 取整行数据的成员函数的使用方法了。当用户使用函数 “getline”时,只能通过换行符来标识获取结束。所以,在 实际编写时,也不是非常方便。 在C++标准输入流类中,其成员函数“read” 是从计算 机的输入流中,读取数据直到用户指定的数据或者文件结束 ,并且将读取到的数据保存在指定的字符数组中。 【实例12.1】用户使用该成员函数对输入流中的数据 进行读取,并且指定读取指定个数的字符。并且读取到的字 符存放在指定的数据缓冲区中。具体的代码如下: 【本例代码位置:源文件\12\实例12.1\12.1.cpp】
12.1.2 输入输出流类
在C++语言中,所有的输入输出流类包含在头文件 “iostream.h”里面。其中,用户常用的输入输出流类包括 了输入流类“istream”和输出流类“ostream”两种。如果 用户需要对文件进行输入输出流操作时,也需要使用到文件 输入输出流“ifstream”和“ofstream”。
12.4.2 格式状态标志介绍
通常情况下,用户没有将输入输出的数据进行任何格式化 操作时,所输出数据的格式都是按照C++默认的格式进行输入 输出的。当然,用户也可以在实例程序中,使用一些格式控制 标识来对数据的输入输出格式进行控制。
12.4.3
显示小数点
如果用户需要在实例程序中,显示浮点数的小数点或 者是有效位数时,可以使用状态标志“precision”或者预定 义的操纵算子“setprecision”都可以实现这个目的。那么 ,在本小节中,将向用户介绍这两个功能方法的具体实现。 1.使用状态标志“precision” 在C++语言中,状态控制标志“precision”的作用是控 制浮点型数据的有效输出位数。 2.使用操纵算子“setprecision” 操纵算子“setprecision”的作用也是设置浮点数的有 效输出位数。
12.4 格式化输入输出流函数
在C++语言中,用户可以对输入输出的数据进行格式化 操作。例如,将输出显示的数据进行一定的格式化后,就可 以按照预定的格式等将输出的数据进行整理,实现一定的目 的。因此,在本节中,将向用户介绍格式化输入输出数据的 相关方法及其实现的相关函数。
12.4.1 简介
通常情况下,用户在进行C++语言程序编写时,可以使 用输入输出流类中的相关功能的成员函数等对所操作的数据 进行整理或者是格式化操作。这样,用户能够将数据按照自 定义的格式进行输出、显示。 通过格式化C++输入输出数据,用户可以根据实际需要 对数据进行操作,方便了用户的使用。在后面的小节中,将 根据实例程序向用户讲解这些格式化操作的具体方法。
在本小节中将向用户讲解如何进行输出流的相关操作方法以及使用函数封装输出流操作的方1231输出流插入运算符输出流插入运算符表示能够将用户指定的数据通过该符号插入到计算机的输出流中送到显示设备进行显示
第12章
C++输入输出流
在C++语言中,用户经常会使用到输入输出操作,即 “cin”和“cout”。其中,操作符“cin”在默认情况下,表 示计算机的键盘。而操作符“cout”在默认情况下表示计算 机的显示屏幕。实际上在C++语言中,还有其他的一些用于 输入输出操作的类或者是函数方法。因此,在本章中,将向 用户介绍这些输入输出流类及其相关的功能函数方法。
12.2.3
实例程序分析
通过前面两个小节的学习,用户对C++输入流类有了一 定的了解。并且对其中的成员函数的原型以及使用方法都进 行非常仔细地讲解。所以,在本小节中,将通过编写实例程 序向用户复习前面学习的相关知识。 【实例12.2】用户可以将前面的实例代码进行整理, 并实现其功能。具体的代码如下所示: 【本例代码位置:源文件\12\实例12.2\12.2.cpp】
参数nProt表示指定文件的属性。通常情况下,用户需要将该 参数值设置为“filebuf::sh_read”和“filebuf::sh_write”,表示该 文件具有可读可写的属性。 提示:用户使用文件输入输出流时,应当在程序中包含头文件 “fstream.h”。
2.创建文件的输入流类对象 在C++语言中,输入流类对象主要用于对文件进行写入 操作。该类的使用方法与输入流类的使用方法相同。应当首 先创建一个输入流类的实例对象,并进行初始化操作后,才 能够继续对文件进行相关的操作。在本小节中将向用户介绍 文件输入流类的初始化方法。 用户创建文件输入流类的实例对象,需要调用该类的 构造函数进行初始化并将该实例对象与指定的文件进行关联 。
12.3 输出流
在C++语言中,除了可以使用输入流以外,还能够使用 输出流进行相关的操作。在本小节中,将向用户讲解如何进 行输出流的相关操作方法以及使用函数封装输出流操作的方 法。
12.3.1 输出流插入运算符
输出流插入运算符“<<”表示能够将用户指定的数据通 过该符号插入到计算机的输出流中,送到显示设备进行显示 。在本小节中,将向用户介绍关于输出流插入运算符的相关 使用方法。C++输出流插入运算符“<<”的具体使用格式如 下所示: 01 cout<<(显示数据); //输出流插入运算符 使用格式 而“cout”则是计算机的显示设备,可以为计算机显示 器、打印机或其他类型的显示设备。
12.3.3 实例程序分析
在前面的小节中,已经向用户介绍了关于C++输出流类 的相关基础知识及其部分成员函数的一些使用方法。那么, 在本小节中,将通过编写完整的实例程序向用户讲解输出流 类的具体使用方法。 【实例12.3】用户在实例程序中,通过使用C++输出流 类,以便实现相应的功能。具体的代码如下所示: 【本例代码位置:源文件\12\实例12.3\12.3.cpp】
12.4.8 小结
在本节中,主要向用户介绍了对输出流数据进行格式 化后,再进行输出的操作方法。并且通过编写实例程序,向 用户讲解了常用的一些格式标志或C++操纵算子等一些基础 知识及其使用方法。用户也可以将随书光盘中的实例代码复 制到本地计算机中,进行保存、编译和运行。以便查看运行 后的实例程序结果。
12.5
文件输入输出流
在C++语言中,用户也可以使用输入输出流对文件进行 操作。使用这种方法对文件进行操作比较简单。在本节中, 将向用户介绍如何使用输入输出流对文件进行操作的相关方 法。
12.5.1
创建文件输入输出流对象
用户在操作之前,应当创建一个文件的输入输出流对 象。实现该功能的类为“ifstream”和“ofstream”。前者为 文件的读取流类,而后者则为文件的写入流类。 1.创建文件的输出流类对象 01 ifstream( const char* szName, int nMode = ios::in, int nProt = fileb数中,含有三个参数。这些参数的意义分 别如下所示: 参数szName表示指向文件的路径名指针。 参数nMode表示打开方式,默认情况下,该参数为 “ios::in”。
12.4.4 对齐方式
在C++语言中,用户可以将程序运行后显示的结果数据 的显示方式进行设置。例如,用户可以将其设置为左对齐或 者是右对齐等。在程序中,实现这一功能的状态控制方法是 “setiosflags”。但是,为了使用户能够通过运行结果明显 地看到对齐格式。所以,用户还应该将该方法与 “setw(int)”一起使用。 例如,用户在实例程序中,通过使用状态控制方法 “setiosflags”和宽度设置方法“setw(int)”对输出数据显 示时的对齐方式进行设置。具体的代码如下所示:
12.5.2 打开文件
在C++语言中,用户可以使用文件输入输出流类中的成 员函数“open”对指定的文件进行关联并将其打开。该成员 函数的原型如下所示: 01 void open(const char* szName,int nMode,int nProt=filebuf::openprot); //文件打开成员函数 该成员函数同样具有三个参数,其含义分别如下所示 (1)参数szName表示指向文件的路径名指针。 (2)参数nMode表示打开方式,默认情况下,该参数 可以为“ios::out”或者是“ios::in”。 (3)参数nProt表示指定文件的属性。
12.4.7
设置、清除格式标志
用户在输出数据时,还可以为其设置或者是清除一些 格式标志。例如,用户可以设置数据输出的格式为8进制或 16进制,也可以为已经设置了数据输出格式的操作清除这些 格式标志。 如果用户需要将输出的数据以进制的格式进行输出, 则可以将其设置为八进制、十六进制或者是十进制格式。与 这些进制格式相对应的输出格式分别为“oct”、“ hex”以 及“dec”。
12.3.2
使用函数实现流输出
与C++输入流一样,输出流也可以使用输出流类的成员 函数来实现数据输出。因此,在本小节中,将向用户介绍这 些函数的原型及其使用方法等。 通常情况下,用户可以使用C++输出流类中的成员函数 “put”将指定的数据放入到计算机输出流中,进行显示。该 成员函数的原型如下所示: 01 basic_ostream& put(E c); //输出流类的成 员函数原型 在成员函数“put”中,该函数的作用是将用户指定的 数据放入到计算机的输出流中。该成员函数含有一个参数, 即单字符类型。
12.4.6 设置输出宽度
在C++语言中,设置输出数据的宽度,用户可以使用操 纵算子“setw”进行。该算子将以用户指定的宽度对数据进 行设置。在本小节中,将向用户介绍该操作算子的基础知识 及其使用方法。 C++操纵算子“setw”含有一个参数,其类型为整型 “int”。该算子的原型如下所示: 01 setw(int); //设置数据的输出宽度 这个操纵算子使用起来非常简单,因此用户可以直接 在实例程序中进行使用。例如,用户在实例程序中,使用该 操纵算子对数据的输出宽度进行设置。具体代码如下所示:
12.1 输入输出流的使用准备
用户在实例程序中,如果需要使用C++语言中的输入输 出流操作时,需要进行一定的准备工作。例如,在实例代码 中,应当包含相应的输入输出流头文件以及与输入输出流操 作相关的类。所以,在本节中,将向用户介绍这些准备工作 的具体步骤。
12.1.1 相关头文件
对于C++程序员而言,对于头文件一定不会陌生。因为 在面向对象编程中,自定义类的定义都是在头文件中进行的 。所以,用户在实例程序中进行任何函数方法的调用操作时 ,都需要包含相应的头文件。在本小节中,将向用户介绍与 C++输入输出流相关的头文件以及调用方法。 在C++语言中,与输入输出流操作相关的头文件名是 “iostrem.h”。在该头文件中,包含了相应的输入输出流类 的定义。