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

文件输入输出(C++)

2015-06-25 19:52 344 查看
简单的文件IO

流检查 is_open

打开多个文件

文本模式

二进制文件

随机存取

内核格式化

需要:头文件
<fstream>


文件输入输出类似
cout
cin


简单的文件I/O

写入文件:

ofstream fcout
声明一个
ofstream
类,然后
fcout.open("test.txt")


或者
ofstream fcout("test.txt")


然后使用
cout
的各种方法

:默认模式为
写入
,既如果文件存在,先清空文件内容,再写入

读取文件:

读取文件的方法和写入文件方法类似。
ifstream fcin
,然后
fcin.open("text.txt")
;或者
ifstream fcin("text.txt")


然后使用各种
cin
方法

关闭连接

可以使用方法
close()
显式关闭到文件的连接

:关闭连接不会删除流,也就是说,流管理装置仍保存,输入输出流对象和他管理的缓存区依然存在

流检查 & is_open()

判断文件流状态,可以用之前的方法:

fail()
eof()
good()
bad()


或者使用新的方法
is_open()


注意
is_open()
可以检测是否以正确的文件模式打开某个文件,而老的方法不可以

打开多个文件

如果需要依次同种模式打开,而不是同时打开,最好是同一个文件对象,毕竟只打开一个流效率更高

文本模式

ofstream
ifstream
构造函数和
open()
方法都有第二个有默认值的参数,openmode类型,也是一种bitmask类型。例如:

ios_base::in


ios_base::out


可以用
|
来组合,例如:

ios_base::out : ios_base::app | ios_base::binary


ios_base::out
本身将导致文件被截短(既清空),但和
ios_base::in
一起使用时,不会导致文件被截短

二进制文件

使用
write()
read()
方法,配合使用。

注意:由于这两个方法都是安字节从内存中读取,所以第一个参数指针必须强制转化为
(char *)


随机存取

使用
seekp()
seekg()
移动文件存取位置

使用
tellp()
tellg()
获取文件存取当前的位置

by the way:
cstdio
tmpnam()
创建临时文件名

内核格式化

<sstream>
头文件使得可以使用
ostream
方法格式化信息写入
string
对象中,并使用
istream
方法格式化读取
string
对象中的内容。

这种方式被称为内核格式化
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: