第14章输入输出与文件内容摘要:

42 设置整型数的基数  输入输出流中的整型数默认为十进制表示。 为了使流中的整型数不局限于十进制,可以插入 hex操纵符将基数设为十六进制,插入 oct操纵符将基数设为八进制,也可以插入 dec操纵符将基数重新设为十进制  也可以通过流操纵符 setbase来改变流的基数。 该操纵符有一个整型参数,它的值可以是 16, 10或 8,表示将整型数的基数设为十六进制,十进制或八进制  使用任何带参数的流操纵符,都必须包含头文件 iomanip  流的基数值只有被显式更改时才会变化,否则一直沿用原有的基数。 《 程序设计 》 程序设计 43 hex、 oct、 dec和 setbase include iostream include iomanip using namespace std。 int main() {int n。 cout Enter a octal number:。 cin oct n。 cout octal oct n in hexdecimal is: hex n 39。 \n39。 cout hexdecimal n in decimal is: dec n 39。 \n39。 cout setbase(8) octal n in octal is: n endl。 return 0。 } Enter a octal number: 30 Octal 30 in hexdecimal is: 18 Hexdecimal 18 in decimal is: 24 Octal 30 in octal is: 30 《 程序设计 》 程序设计 44 设置浮点数精度  设置浮点数的精度(即,实型数的有效位数)可以用流操纵符 setprecision或基类 ios的成员函数 precision来实现。  一旦调用了这两者之中的某一个,将影响所有输出的浮点数的精度,直到下一个设置精度的操作为止。  这个操纵符和成员函数都有一个参数,表示有效位数的长度。 《 程序设计 》 程序设计 45 include iostream include iomanip using namespace std。 int main() {double x = , y =。 for (int i = 9。 i 0。 i) {(i)。 cout x 39。 \t39。 y endl。 } // 或写成 for (int i = 9。 i 0。 i) // cout setprecision(i) x 39。 \t39。 y endl。 return 0。 } 《 程序设计 》 程序设计 46 执行结果 9877 123 +003 +002 +003 1e+002 1e+004 《 程序设计 》 程序设计 47 设置域宽  域宽是指数据所占的字符个数。  设置域宽可以用基类的成员函数 width,也可以用流操纵符( setw)。 width和 setw都包含一个整型的参数,表示域宽。  设置域宽可用于输入,也可用于输出。 设置宽度是适合于下一次输入或输出,之后的操作的宽度将被设置为默认值。  当没有设置输出宽度时, C++按实际长度输出。 如整型变量 a=123, b=456,则输出 cout a b。 将输出 123456。 《 程序设计 》 程序设计 48  一旦设置了域宽,该输出必须占满域宽。 如果输出值的宽度比域宽小,则插入填充字符填充。 默认的填充字符是空格。 如果实际宽度大于指定的域宽,则按实际宽度输出。 如语句 cout setw(5) x setw(5) y endl。 的输出为 123 456 每个数值占 5个位置,前面用空格填充。 《 程序设计 》 程序设计 49  设置域宽也可用于输入。 当输入是字符串时,如果输入的字符个数大于设置的域宽时, C++只读入域宽指定的字符个数。 如有定义 char a[9] , b[9]。 执行语句 cin setw(5) a setw(5) b。 用户在键盘上的响应为 abcdefghijklm 则字符串 a的值为“ abcd”,字符串 b的值为“ defg”。 《 程序设计 》 程序设计 50 其他流操纵符 流操纵符 描述 skipws 跳过输入流中的空白字符,使用流操纵符 noskipws复位该选项 left 输出左对齐,必要时在右边填充字符 right 输出右对齐,必要时在左边填充字符 showbase 指名在数字的前面输出基数,以 0开头表示八进制, 0x或0X表示十六进制。 使用流操纵符 noshowbase复位该选择 uppercase 指明当显示十六进制数时使用大写字母,并且在科学计数法输出时使用大写字母 E。 可以用流操纵符nouppercase复位 showpos 在正数前显示加号( +),可以用流操纵符 noshowpos复位 scientic 以科学计数法输出浮点数 fixed 以定点小数形式输出浮点数 setfill 设置填充字符,它有一个字符型的参数 《 程序设计 》 程序设计 51 用户自定义的流操纵算子  程序员可以定义自己的流操纵符  例如,定义输出流操纵符格式如下: ostream amp。 操纵符名( ostream amp。 os) {需要执行的操作 } 《 程序设计 》 程序设计 52 include iostream using namespace std。 ostream amp。 tab(ostream amp。 os) {return os 39。 \t39。 } int main() {int a=5,b=7。 cout a tab b endl。 return 0。 } 5 7 《 程序设计 》 程序设计 53 输入输出与文件  流与标准库  输入输出缓冲  基于控制台的 I/O  基于文件的 I/O  基于字符串的 I/O 《 程序设计 》 程序设计 54 基于文件的 I/O  文件的概念  文件和流  文件的顺序访问  文件的随机访问  访问有记录概念的文件 《 程序设计 》 程序设计 55 文件的概念  文件是驻留在外存储器上、具有标识名的一组信息集合,用来永久保存数据。  与文件相关的概念有:  数据项(字段)  记录  文件  数据库  如在一个图书管理系统中,有一个数据库。 这个数据库由书目文件、读者文件及其它辅助文件组成。 书目文件中保存的是图书馆中的所有书目信息,每本书的信息构成一条记录。 每本书需要保存的信息有:书名、作者、出版年月、分类号、 ISBN号、图书馆的馆藏号以及一些流通信息。 其中书名是一个字段,作者也是一个字段。 《 程序设计 》 程序设计 56 基于文件的 I/O  文件的概念  文件和流  文件的顺序访问  文件的随机访问  访问有记录概念的文件 《 程序设计 》 程序设计 57 文件和流  C++语言把每一个文件都看成一个 有序的 字节流(把文件看成 n个字节)  每一个文件以文件结束符 (endoffile marker)结束  当打开一个文件时,该文件就和某个流关联起来  与这些对象相关联的流提供程序与特定文件或设备之间的通信通道  例如. cin对象 (标准输入流对象 )使程序能从键盘输入数据, cout对象 (标准输出流对象 )使程序能向屏幕输出数据。 《 程序设计 》 程序设计 58 文件访问过程  定义一个流对象  打开文件:将流对象与文件关联起来  访问文件  关闭文件 :切断流对象与文件的关联 《 程序设计 》 程序设计 59 定义一个流对象  C++有三个文件流类型: ifstream:输入文件流 ofstream:输出文件流 fstream:输入输出文件流  如: ifstream infile。 《 程序设计 》 程序设计 60 打开文件  用流对象的成员函数 open打开文件  用流对象的构造函数打开文件  无论是成员函数 open还是通过构造函数,都有两个参数: 打开的文件名 文件打开模式  如果文件打开失败,返回 0 《 程序设计 》 程序设计 61 文件打开模式 文件打开模式名 含义 in 打开文件,做读操作 out 打开文件,做写操作 app 在每次写操作前,找到文件尾 ate 打开文件后,立即将文件定位在文件尾 trunc 打开文件时,清空文件 binary 以二进制模式进行输入输出操作 《 程序设计 》 程序设计 62 默认打开方式  ifstream流对象是以 in模式打开  ofstre。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。