一:I/O流的概念及流类库结构
No.1 一些概念
流是一种抽象,它负责在数据的生产者和数据的消费者之间建立联系,并管理数据的流动。
程序将流对象看做文件对象的化身
一般意义下的读操作在流数据抽象中被称为(从流中)提取,写操作被称为(向流中)插入
本章中把别名所表示的模板实例称作类
No.2 输出流 ostream
预先定义的ostream类对象用来完成向标准设备的输出:
cout是标准输出流
cerr是标准错误输出流,没有缓冲,发送给他的内容立即输出
clog类似于cerr,但是有缓冲,缓冲区满时输出
No.3 输出流 ofstream
ofstream支持磁盘文件输出。如果需要一个只输出的磁盘文件,可以构造一个ofstream类的对象。
二:插入运算符和操纵符
No.1 一些基本函数的应用
1 | /*控制宽度之 cout.width(), |
1 | /* |
1 | /* |
1 |
|
写一次代码,但是具有持久性的:
左对齐setiosflags(ios_base::left)
填充setfill(‘@’)
cout<<setiosflags(ios_base::scientific)
cout<<setiosflags(ios_base::fixed)
No.2 文件输出流成员函数
ios_base::out与ios_base::binary的相同点:
如果硬盘上有所命名的文件,会把此文件删掉,重建新文件
ios_base::app:
用于在文件尾部追加数据,不会再开一个新的文件存储
No.3 put函数
1 | cout.put('A');//精确地输出一个字符 |
No.4 write函数
1 | file.write((char * )(&c),sizeof(c)); |
No.5 错误处理函数
fail的功能及返回值:
如果出现一个不可恢复的错误或一个预期的条件,例如一个转换错误或文件未找到,则返回一个非0值。在用零参数调用clear之后,错误标记被清除。
三:题目整理
1:要进行文件的输出,除了包含头文件iostream外,还要包含fstream
2: important:
定义char p=”abcd”;能输出p的值(“abcd”的地址)的为:cout<<(void )p;
解析:
在C语言里,输出一个字符串的指针很方便,直接printf(“%p/n”,p);就输出了。
而在c++里的cout在输出字符串地址的时候,自动输出对应的字符串了,所以转换为void *类型,因为void类型的cout不知道怎么输出了,最后只能输出”abcd”的地址了
分析:如果是&p输出的是地址的地址并不是所要的”abcd”的地址