操作文件的三大类 读 写 读写
ofstream 读文件
ifstream 写文件
fstream 读写文件
文件打开方式
ios :: in 为读文件而打开文件
ios :: out 为写文件而打开文件
ios :: binary 二进制方式
c++ 写文本文件
1.包含头文件 #include<fstream>
2.创建流对象 ofstream ofs;
3.打开文件 ofs.open(" 文件名 ",打开方式)
4.写数据 ofs<<"要写入的数据"<<endl;
5.关闭文件 ofs.close();
#include<iostream>
using namespace std;
#include<string>
#include<fstream>
void test01() {
ofstream ofs;
ofs.open("text1.txt", ios::out);
ofs << "姓名:张三" << endl;
ofs << "性别:男" << endl;
ofs << "年龄:18" << endl;
ofs.close();
}
int main() {
test01();
}
读文本文件
1.包含头文件 #include<fstream>
2.创建流对象 ifstream ifs;
3.打开文件 ifs.open(" 文件名 ",打开方式)
4.写数据 ifs<<"要写入的数据"<<endl;
5.关闭文件 ifs.close();
#include<iostream>
using namespace std;
#include<string>
#include<fstream>
void test01() {
ifstream ifs;
ifs.open("text1.txt", ios::in);
string buf;
while (getline(ifs, buf))
{
cout << buf << endl;
}
ifs.close();
}
int main() {
test01();
}
写二进制文件
1.包含头文件 #include<fstream>
2.创建流对象 ofstream ofs(" 文件名 ",打开方式); //二进制文件打开方式是ios::binary;
3.创建类对象 Person p;
4.写文件 ofs.write((const char *)&p, sizeof(p));
5.关闭文件 ofs.close();
#include<iostream>
using namespace std;
#include<string>
#include<fstream>
class Person {
public:
char m_Name[64];
int m_Age;
};
void test01() {
ofstream ofs("person.txt", ios::out | ios::binary);
Person p = { "张三" ,18};
ofs.write((const char*)&p, sizeof(p));
ofs.close();
}
int main() {
test01();
}
读二进制文件
函数原形: istream& read(char *buffer, int len);
字符指针buffer指向内存中一段存储空间,len是读写的字节数;
文件输入流对象,可以通过read函数以二进制形式读数据.
#include<iostream>
using namespace std;
#include<string>
#include<fstream>
class Person {
public:
char m_Name[64];
int m_Age;
};
void test01() {
ifstream ifs("person.txt", ios::in | ios::binary);
if (!ifs.is_open())
{
cout << "文件打开失败" << endl;
}
Person p;
ifs.read((char *)&p, sizeof(p));
cout << "姓名: " << p.m_Name << "年龄: " << p.m_Age << endl;
}
int main() {
test01();
}