C++文件操作主要依靠两个类来进行
1、 写文件操作类:std::ofstream
2、 读文件操作类:std::ifstream
std::fstream类可以进行读写操作,但一般用上面两个类进行,分工明确。
需要包括的头文件:
#include <iostream>
#include <fstream>
C++操作函数像C需要将相对地址转换成绝对地址。
文件操作结构体
typedef struct Cpp_sys_info
{
char name[10];
char group[10];
int permissions;
}Cpp_User_info;
文件操作方法
打开文件属性open
ios::in :以输入方式打开文件
ios::out :以输出方式打开文件
ios::app :以追加的方式打开文件,所有输出附加在文件末尾
ios::ate :文件打开后,文件流指针定位到文件尾,和ios::app功能相同
ios::trunc :如果文件已存在则先删除该文件
ios::binary :以二进制的方式打开文件
具体用法在后面的示例中展现。
设置文件当前指针
seekp:设置写文件指针
seekg:设置读文件指针
ios::beg: 文件开头
ios::cur: 文件当前位置
ios::end: 文件结尾
m_steam_read.seekg(-8L,ios::end); //把读文件指针移动到从结尾位置起始,往负方向的6个字节处
m_steam_write.seekp(5L,ios::beg); //把写文件指针移动到从文件开头起始,往正方向的5个字节处
写文件操作类std::ofstream
写入数据
源码
//std::ofstream steam_write(p_argv[1],ios::in | ios::trunc); //比较简单的初始化函数,直接读取文件
std::ofstream steam_write;
m_steam_write.open(p_argv[1],ios::in | ios::trunc); //比较正式的写法,更加直观
if (!steam_write.is_open()) //判断文件是否打开成功
{
cout << "wirte is NO" << endl;
return;
}
steam_write << __func__ << " func is wirte test " << 45 << 0x61 <<endl; //写入数据
steam_wr