C++输入/输出流
来源:互联网 发布:c语言设计简易计算器 编辑:程序博客网 时间:2024/04/25 17:39
转自:http://blog.csdn.net/KevinYuen/archive/2009/04/02/4044790.aspx
一、流
低级I/O功能(如无格式的I/O):通常指大量的字节在设备到内存或内存到设备的简单传输。
高级I/O功能(格式化I/O):它将字节组合成有意义的单元,如数据类型。
对于大容量文件的处理,使用无格式的I/O可获得最佳的性能。
二、成员函数get和getline
不带参数值成员函数get ,从指定的流中读取一个字符(即使是空格),并返回该字符作为该函数的调用值。遇到文件结束时返回EOF。
get 函数还可以带3个参数:接收字符的字符型数组,数组大小和分隔符(默认为'/n')。从输入流中读取数据时,读取到比指定的最大字符数少一个字符中止,或者读取到指定的分隔符终止。为了使字符串数组(被程序用作缓冲区)中的输入字符串结束,空字符会被插入到字符数组中。分隔符不会被存储在数组中,但仍保留在输入流中(下一个要被读取的字符),所以除非分隔符从输入流中刷新,否则紧接着的第二个get操作结果就是空行。
getline 函数的操作与带3个参数的get成员函数类似,读取一行字符串后在字符串数组中插入一个空格,不同的是getline会从输入流中删除分隔符,而不是把它放入数组。
三、ignore
用于跳过指定数量的字符(默认1)或转到指定的分隔符(默认EOF),在读取文件该分隔符可使ignore跳到文件末尾终止输入。
putback 的作用是把上次从输入流中通过get取得的字符在放回该输入流中。对于应用程序需要扫描输入流以查找以特定字符开头的字段来说,非常有用。
peek 的功能是返回输入流一下个字符,而不是从输入流中删除该字符。
四、成员函数read,gcount,write的无格式输入/输出
read
write 专用于处理无格式的输入/输出。它们负责把一定量的字节输入内存的数组,以及从内存数组中输出字节(未被格式化)。
gcount 可以统计最后一次输入操作读取的字符数。
五、流操纵元
用来完成格式化I/O,诸如设置域宽,设置精度,设置和清除格式化标志,设置字段填充字符,刷新流,在输入流中插入一行并刷新流,在输出流中插入空白字符,跳过输入流的空白字符等功能。
1、 数流基数
dec oct hex setbase (如setbase(10)十进制)
十进制 八进制 十六进制 参数化流操纵元
2、 设置浮点数的精度
精度一旦设置,就可用语以后所有的输出流操作,直至精度发生变化。
cout.precision( num );
setprecision( num );
3、设置域宽:
setw
width 宽度的设置仅使用于下一行的流插入或流读取,在该次操作完成之后,宽度就被置回0(即输出值按照所需的宽度来输出)不带参数的width函数返回当前的设置。
六、流格式装备
各种格式标志指定了即将在I/O流操作期间执行的格式类型,成员函数setf,unsetf和flags用语设置控制标志。
举例:
cout.setf( iso::showpos ) //指定正负数前要加+和-号
cout.setf( iso::scientific ) //指定浮点数输出采用科学记数法
cout.setf( iso::left )
cout.setf( iso::right ) //左/右对齐输出
七、流错误状态
ios类中的位可用于测试流的状态。
遇到文件结束符之后,将为输出流设置eofbit位。调用成员函数来确定是否已经遇到了文件结束符。
流中发生格式错误时,虽然会设置failbit,但字符不会丢失。成员函数fail判断流操作是否失败,这种错误通常可修复。
发生导致数据丢失的错误时,设置dadbit。成员函数bad判断留操作是否失败,这种严重的错误通常不可修复。
如果以上的3状态没有设置,则设置goodbit。
测试流状态较好的方法是使用成员函数eof,bad,fail,good。
clear通常用于把一个流状态恢复为"good",从而可以对该流继续执行I/O操作,由于其默认参数ios::goodbit利用语句 cin.clear()
例:cin.clear( ios::failbit )为流设置了failbit。
八、把输出流连接到输入流
成员函数tie以同步istream和ostream 的操作以保证输出在输入之前显示出来
例: cin.tie( &cout );不过这个C++会自动执行。
Inputstream.tie( 0 ) 解除从输出流到输入流的连接
文件的拷贝:(将to.txt中的内容全部复制到from.txt)
view plaincopy to clipboardprint?
ifstream in("to.txt");
assert(in);
ofstream out("from.txt");
assert(out);
out << in.rdbuf() ;
ifstream in("to.txt");
assert(in);
ofstream out("from.txt");
assert(out);
out << in.rdbuf() ;
strstreams介绍:
istrstream::istrstream( char* buf );
//取一个指向零终止符数组的指针;可以提取字节直到零为止。
istrstream::istrstream( char* buf, int size );
//可以一直提取字节到buf[size],而不管是否遇到了一个零。
ostrstream::ostrstream( char*, int, int = ios::out );
// char* 是预分配的缓冲区,在那里字符将结束
// int 缓冲区的大小
// int = ios::out 模式,如果缺省,字符从缓冲区的开始地址格式化。
关于ostrstream,需要记住的一点:没有为我们插入一般在字符数组末尾所需要的零终止符。当我们准备好零终止符时,用特别操纵算子ends。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/KevinYuen/archive/2009/04/02/4044790.aspx
- C语言流输入和输出函数
- C++IO流-标准输入与输出
- C程序设计语言--输入/输出
- C --- 文件输入/输出
- C格式化输入/输出
- C++:输入与输出
- 【C】标准输入/输出
- C格式化输入、输出
- [C++]输入/输出流类库
- C输入与输出
- C 输入 & 输出
- C语言 文字输出输入
- c语言 输入/输出函数
- C的输入和输出
- C/C++输入,输出汇总
- C语言文件输入/输出
- C程序设计----输入和输出
- C语言格式化输入/输出
- 这儿还真不如博客园。。。
- 查看SQL
- 用System.Web.Mail发送邮件
- 使用javascript获取获取dropdownlist的value与text
- 7.7 进程环境_共享库
- C++输入/输出流
- BREW ISprite接口学习笔记
- 【消息反射】WM_NOTIFY与消息反射【总结】
- C++新手问题:什么是标识符?
- Type Casting
- Case Class
- Templates
- Column-oriented DBMS
- Namespaces