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

C++ Primer Plus 第17章 输入,输出和文件

2014-06-27 14:22 267 查看
第17章 输入、输出和文件

1.当到达输入语句时,他将刷新输出缓冲区中当前所有的输出

2.streambuf类 提供了对缓冲区的各种操作

ios_base类表示流的一般特征

ios类基于ios_base,包含了一个指向streambuf对象的指针

ostream类从ios派生,提供可输出方法

istream类从ios派生,提供可输入方法

iostream类基于ostream和istream,继承了输入和输出方法

3.包含iostream则自动创建了8个流对象

cin 标准输入 wcin 宽字符流

cout 标准输出 wcout 宽字符流

cerr 标准错误流,没有被缓冲,直接发送给屏幕 wcerr 宽字符流

clog 标准错误流,被缓冲 wclog处理wchar_t宽字符流

4.C++的所有基本类型P737

5.ostream

put(),显示字符

write(),显示字符串 不会遇到空字符时自行停止,会根据参数的长度,显示该长度的字符

刷新缓冲区:当遇到换行符;当输入将要发生时

强制刷新缓冲区cout<<flush;或flush(cout)

6.cout格式化输入

对浮点数有新变化

新式:浮点类型被显示为6位,末尾的0不显示。数字以定点表示法显示或科学计数法表示,当指数大于等于6或小于等于-5时,科学计数法表示

旧式:浮点类型被显示为带6位小数,末尾的0不显示。数字以定点表示法显示或科学计数法表示,当指数大于等于6或小于等于-5时,科学计数法表示

7.ios_base类存储了描述格式状态的信息

dex hex oct控制符,实际上是函数 如hex(cout)以16进制打印

一般是cout<<hex 会相当于hex(cout)

int width() 返回当前设置

int width(int i) 宽度设置为i,并返回以前的值

width()方法只影响显示的下一个项目,然后恢复默认值

cout.fill(char) 输出长度不满足设定长度,多余的就会使用char填充

设置精度:cout.precision(int)

8.ios_base类提供了setf()函数能够控制多种格式化特性P747-P751

9.一些标准控制符 P751 实际上是函数

10.头文件iomanip

可提供常用控制符,如

setprecision(int)设置精度

setfill(char)设置填充字符

setw(int)设置字段宽度

用法:如cout<<setw(4);

11.使用cin进行输入

cin>>staff_size

cin的参数和返回值都是使用引用。这表明能修改变量

cin和cout对象包含一个描述流状态的数据成员,从ios_base继承。

流状态由3个ios_base元素组成 :eofbit,badbit,failbad

eofbit:当cin操作到文件尾时

failbit:未能读取到预期的字符时

badbit:在一些无法诊断的失败破坏流时

流状态的一些元素和函数P756

12.使用cin>>,cin.get(ch) 和cin.get()P761

使用原则:

如果跳过空白字符,使用cin>>更方便

希望检查每一个字符,使用cin.get(ch) 和cin.get()都可以 只是要处理换行符

13.字符串输入 getline(),get(),ignore()P762

istream & get(char*,int,char)

istream & get(char*,int)

istream & getline(char*,int,char)

istream & getline(char*,int)

istream & cin.ignore(int = 1,int = EOF)

如cin.ignore(255,'\n');

函数调用读取并丢弃接下来的255个字符或直接到达第一个换行符

getline 如果没有抽取到任何字符,则设置failbit;若抽取到了行指定字符,但行里还有其他字符,则设为failbit

get 如果没有抽取到任何字符,则设置failbit

14.其他istream方法P764-P765

read() 如cin.read(gross,144) 与get相似,只是不回在输入后添加空字符,不能成为字符串

peek() cin.peek() 返回输入流的下一个字符,但是不抽取流中的字符

gcount()

putback() 将一个字符插入到输入流的开始,读取是为开头字符

15.文件输入和输出

要添加头文件fstream

要写入文件

1.创建一个ofstream对象

2.将该对象与特定的文件关联起来

3.以使用cout的方式使用fout

ofstream fout;fout.open("hjq.txt");

读取文件

1.创建一个ifstream对象

2.将该对象与特定的文件关联起来

3.以使用cin的方式使用fcin

最后关闭fout.close()

16.创建多个流对象,则会创建多个缓冲区,互相独立

打开多个文件,就需要创建多个流对象,

17.文件模式

描述文件将被如何使用:读,写,追加等

P773-P781

18.随机存取P783-P788

19.内核格式化P788-P790

sstream

读取string对象中的格式化信息或将格式化信息写入string对象中被称为内核格式化

ostringstream outstr

istringstream instr(facts) facts是一个strig对象

最后3个内容过于少用,应用时再查看

17.8编程练习 有时间再做

估计没时间
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐