包含头文件 <fstream>
- ofstream:写操作
- ifstream:读操作
- fstream:读写操作
步骤如下:
- 包含头文件
#include <fstream>
- 创建流对象
ofstream ofs;
- 打开文件
ofs.open("path", way);
- 写数据
ofs << "data";
- 关闭文件
ofs.close()
文件打开方式
打开方式 | 解释 |
---|---|
ios::in | 为读文件而打开文件 |
ios::out | 为写文件而打开文件 |
ios::ate | 初始位置:文件尾 |
ios::app | 追加方式写文件 |
ios::trunc | 如果文件存在先删除,再创建 |
ios::binary | 二进制方式 |
注意:文件打开方式可以配合使用,利用 |
操作符
example
ofs.open("path", ios::binary | ios::out); // 用二进制方式写文件
步骤如下:
- 包含头文件
#include <fstream>
- 创建流对象
ifstream ifs;
- 打开文件
ifs.open("path", way);
- 读数据 四种方式读入
- 关闭文件
ofs.close()
#include <fstream>
void test() {
// 创建流对象
ifstream ifs;
// 打开文件,并且判断是否打开成功
ifs.open("test.txt", ios::in);
if(!ifs.is_open()) {
return;
}
// 读数据
...
//关闭文件
ifs.close();
}
读数据的4中方法
char buf[1024];
while(ifs >> buf) {
std::cout << buf << std::endl;
}
char buf[1024] = {0};
while(ifs.getline(buf, sizeof(buf))) {
std::cout << buf << std::endl;
}
std::string buf;
while(getline(ifs), buf) {
std::cout << buf << std::endl;
}
char c;
while((c = ifs.get()) != EOF) {
std::cout << c;
}
二进制方式写文件主要利用流对象调用成员函数 write()
ostream& write(const char* buffer, int len);
二进制写文件可以写入自定义数据类型
struct Person {
char m_Name[64];
int m_Age;
};
void test() {
ofstream ofs("person.txt", ios::out | ios::binary);
Person p{"abc", 18};
ofs.write((const char*)&p, sizeof(Person));
ofs.close();
}
二进制方式读文件主要利用流对象调用成员函数 read()
ostream& read(char* buffer, int len);
二进制写文件可以写入自定义数据类型
struct Person {
char m_Name[64];
int m_Age;
};
void test() {
ifstream ifs("person.txt", ios::in | ios::binary);
if(ifs.is_open()) {
return;
}
Person p;
ifs.read((char*)&p, sizeof(Person));
std::cout << "name:" << p.m_Name
<< " age:" << p.m_Age << std::endl;
ifs.close();
}
edit Serien