文件操作:

c++中对文件操作需要包含头文件

文本文件:以ASCII码形式储存
二进制文件:以二进制文件储存(读不懂)

操作文件三大类:

读:ifstream ; 写:ofstream ; 读写:fstream

一.文本文件:

1.写文件:

步骤:

(1)包含头文件:#include

(2)创建流对象:ofstream ofs;

(3)打开文件:ofs.open(“文件路径”,打开方式);

(4)写数据:ofs << “数据”;

(5)关闭文件:ofs.close();

文件打开方式:

注:1.可用 | 操作符运用多种打开方式。

2.可在创建流对象的时候直接打开文件并指定打开方式:

ofstream ofs("test.txt", ios::out | ios::binary);

例:

void test01(){ofstream ofs;ofs.open("test.txt", ios::out);//不写路径,默认创建在与代码项目同文件夹ofs << "hello world" << endl;ofs << "hello world" << endl;ofs.close();}

2.读文件:

步骤:

(1)包含头文件:#include

(2)创建流对象:ifstream ifs;

(3)打开文件,并判断是否打开成功:

ifs.open(“文件路径”,打开方式);
ifs下有一 is_open 函数,返回bool类型值。

if (!ifs.is_open())//这里取反{cout << "文件打开失败" << endl;return;}

(4)读数据:四种方式。

(5)关闭文件:ifs.close();

读文件的四种方式:

a.第一种:char[ ] + ifs >>

char buf[1024] = { 0 };while (ifs >> buf)//按空格和回车循环{cout << buf << endl;}

b.第二种:char[ ] + ifs.getline()

char buf[1024] = { 0 };while (ifs.getline(buf, sizeof(buf)))//按行循环{cout << buf << endl;}

c.第三种:string + getline()

string buf;while (getline(ifs, buf)){cout << buf << endl;}

d.第四种:char + ifs.get() (不推荐)

char c;while ((c = ifs.get()) != EOF){cout << c;}

二.二进制文件:

指定打开方式为:ios::binary

1.写文件:

调用流对象的成员函数 write(const char*,写入最大字符数)

例:

class Person{public:char m_Name[64];int m_Age;};void test03(){ofstream ofs("test.txt", ios::out | ios::binary);Person p = { "张三",18 };ofs.write((const char*)(&p), sizeof(Person));ofs.close();}

2.读文件:

调用流对象的成员函数 read(char*,读出最大字符数)

class Person{public:char m_Name[64];int m_Age;};void test04(){Person p;ifstream ifs;ifs.open("test.txt", ios::in | ios::binary);if (!ifs.is_open()){cout << "文件打开失败" << endl;return;}ifs.read((char*) & p, sizeof(Person));cout << p.m_Name << " " << p.m_Age << endl;}