C/C++文件操作2——fstream类
来源:互联网 发布:lua 5.1 windows 编辑:程序博客网 时间:2024/05/20 10:24
C++对文件的操作是通过stream的子类fstream(文件流)来实现的,须加入fstream头文件。
1、打开文件
fstream file;file.open("a.txt", mode, access);
mode是打开文件的方式,有如下几种:
ios::app: 以追加的方式打开文件
ios::ate: 文件打开后定位到文件尾,ios:app就包含有此属性
ios::binary: 以二进制方式打开文件,缺省的方式是文本方式。两种方式的区别见前文
ios::in: 文件以输入方式打开
ios::out: 文件以输出方式打开
ios::nocreate: 不建立文件,所以文件不存在时打开失败
ios::noreplace: 不覆盖文件,所以打开文件时如果文件存在失败
ios::trunc: 如果文件存在,把文件长度设为0
多种方式用‘|’连接,如ios::out|ios::binary
access是访问或建立的文件属性:
0:普通文件,默认情况
1:只读文件
2:隐含文件
4:系统文件
2、读写文件
1)文本文件的读写
文本文件的读写很简单:用插入器(<<)向文件输出;用析取器(>>)从文件输入。示例如下:
file1.put('a');//向文件写入一个字符'a'char ch;int nch;char str[50];file1.get(ch);//读取一个字符nch = file1.get();//读取一个字符file1.get(str, 50, 'a');//从文件中读取字符串str,当遇到字符'a'或者读取了50个字符时停止
操纵符 功能 输入/输出
dec 格式化为十进制数值数据 输入和输出
endl 输出一个换行符并刷新此流 输出
ends 输出一个空字符 输出
hex 格式化为十六进制数值数据 输入和输出
oct 格式化为八进制数值数据 输入和输出
setpxecision(int) 设置浮点数的精度位数 输出
比如要把123当作十六进制输出:file1<<hex<<123,要把3.1415926以5位精度输出:file1<<setpxecision(5)<<3.1415926。
2)二进制文件的读写
char* str1 = "asdf";char str2[5] = {0};file1.read(str2, 5);//读取字符串到str2中file2.write(str1, strlen(str1));//写入字符串到文件中
3、关闭文件
打开的文件使用完成后一定要关闭,fstream提供了成员函数close来完成此操作,如:file.close();就把file相连的文件关闭。不执行关闭操作可能造成文件数据丢失。
4、检测EOF
file.eof()用来检测是否到达文件尾,如果到达文件尾返回非0值,否则返回0。
5、文件定位
C++ I/O系统管理两个与一个文件相联系的指针。一个是读指针,它说明输入操作在文件中的位置;另一个是写指针,它下次写操作的位置。每次执行输入或输出时,相应的指针自动变化。所以,C++的文件定位分为读位置和写位置的定位,对应的成员函数是 seekg()和 seekp(),seekg是设置读位置,seekp是设置写位置,二者针对二进制文件操作。它们最通用的形式如下:
istream &seekg(streamoff offset,seek_dir origin);ostream &seekp(streamoff offset,seek_dir origin);偏移量offset表示移动的字节数,seek_dir表示移动的基准位置,取下列值:
ios::beg: 文件开头
ios::cur: 文件当前位置
ios::end: 文件结尾
0 0
- C/C++文件操作2——fstream类
- C/C++文件输入输出操作——FILE*、fstream、windowsAPI
- C/C++文件输入输出操作——FILE*、fstream、windowsAPI
- C/C++文件输入输出操作——FILE*、fstream、windowsAPI
- C/C++文件输入输出操作——FILE*、fstream、windowsAPI
- C/C++文件输入输出操作——FILE*、fstream、windowsAPI
- C/C++文件输入输出操作——FILE*、fstream、windowsAPI
- C/C++文件输入输出操作——FILE*、fstream、windowsAPI
- C/C++文件输入输出操作——FILE*、fstream、windowsAPI
- C/C++文件输入输出操作——FILE*、fstream、windowsAPI
- C/C++文件输入输出操作——FILE*、fstream、windowsAPI
- C/C++文件输入输出操作——FILE*、fstream、windowsAPI
- C/C++文件输入输出操作——FILE*、fstream、windowsAPI
- C/C++文件输入输出操作——FILE*、fstream、windowsAPI
- C/C++文件输入输出操作——FILE*、fstream、windowsAPI
- C/C++文件输入输出操作——FILE*、fstream、windowsAPI
- C/C++文件输入输出操作——FILE*、fstream、windowsAPI
- C/C++文件输入输出操作——FILE、fstream、windowsAPI
- PHP数组相加和merge的区别
- Android源代码仓库及其管理工具Repo分析
- spring事物属性与隔离级别
- ios开发一些基础书籍
- 总结使用Unity3D优化游戏运行性能的经验
- C/C++文件操作2——fstream类
- Java面试题全集(C)
- 【已解决】新建Android Studio项目,卡死了
- Table View简单描述
- 分享个Duilib中基于wke的浏览器控件
- 蓝桥杯 最小乘积(基本型)
- 同事飞哥的文章:Xen 的漫漫人生路
- Android 失去焦点,关闭弹出的软键盘
- 二叉树的创建,遍历