您的位置:首页 > 其它

ifstream、ofstream的使用

2013-06-04 11:44 225 查看
文件IO相关的库有

<winbase.h> CreateFile()等,winbase.h定义了win32中base APIS(最基本的c)


<stdio.h>包含fopen(),fread()等(高级一点的c)
MFC下CFile类封装的文件IO操作(MFC、c++)
<fstream>下的文件IO操作(c++)

ofstream的使用

1.打开文件: open(char* fileName, int mode, int access)

mode可以有:

ios::app:   以追加的方式打开文件

ios::ate:   文件打开后定位到文件尾,ios:app就包含有此属性

ios::binary: 以二进制方式打开文件,缺省的方式是文本方式。两种方式的区别见前文

ios::in:    文件以输入方式打开(文件数据输入到内存)

ios::out:   文件以输出方式打开(内存数据输出到文件)

ios::nocreate: 不建立文件,所以文件不存在时打开失败

ios::noreplace:不覆盖文件,所以打开文件时如果文件存在失败

ios::trunc:  如果文件存在,把文件长度设为0
tips:理解ios::app:

app是变量名,其被定义于std命名空间下ios类下的static变量,所有也可以写为std::ios::app,同时在ofstream中也定义了app静态变量,所有也可以写ofstream::app

access可以有:

0:普通文件,打开访问

1:只读文件

2:隐含文件

4:系统文件

2.向文件中输出数据:put()、重载运算符<<、write()

1.二进制文件的写:put(char a),输出一个字符。

2.文本文件的写:重载运算符<<,可以输入字符,c风格字符串,string对象,格式化数字。

其中格式化数字的输出规则如下:

操纵符 功能 输入/输出

dec 格式化为十进制数值数据 输入和输出

endl 输出一个换行符并刷新此流 输出

ends 输出一个空字符 输出

hex 格式化为十六进制数值数据 输入和输出

oct 格式化为八进制数值数据 输入和输出

setpxecision(int p) 设置浮点数的精度位数输出

比如要把123当作十六进制输出:file1<<hex<<123;要把3.1415926以5位精度输出:file1<<setpxecision(5)<<3.1415926。

3.数据块的输出 write(const unsigned char *buf,int num);将buf的前num个输出到文件

3.关闭文件 close()

4.辅助操作:



1.文件结束eof()

2.文件指针定位

ostream &seekp(streamoff offset,seek_dir origin);

seek_dir 表示移动的基准位置,是一个有以下值的枚举:
ios::beg:  文件开头
ios::cur:  文件当前位置
ios::end:  文件结尾
file2.seekp(1234,ios::beg); //把文件的写指针从文件开头向后移1234个字节

Ifstream的使用

1.打开文件open,同ofstream

2.读入文件数据,get (),get(char& x),重载>>,read()

1.二进制数据的读入get(),get(char& x) get():返回读入的二进制数据或字符,如果到文件末尾,返回EOF,get(char& x),将得到的字符赋值给x,返回ifstream,当到达文件末尾,返回NULL。
2.文本文件的读入 重载>>,与ofstream同
3.数据块的读入。read(),同ofstream.

3.关闭文件colse()

4.辅助函数

文件结束eof(),同ofstream
文件指针定位
ifstream& seekg(streamoff offset, seek_dir origin).同ofstream
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: