通过文件,可以将数据持久化。C++ 中对文件的 *** 作需要包含头文件
。
文本文件,以文本的ASCII码的形式存储在计算机中。
二进制文件,以二进制的形式存储在计算机中,用户一般无法直接阅读。
*** 作文本的3个类:ofstream,写 *** 作;ifstream,读 *** 作;fstream,读写 *** 作。
打开方式 | 解释 |
---|---|
ios::in | 以读文件的方式打开 |
ios::out | 以写文件的方式打开 |
ios::ate | 初始位置,文件末尾 |
ios::app | 以追加的方式写文件 |
ios::trunc | 如果文件存在,先删除,再创建 |
ios::binary | 二进制的方式 |
**Note:**文件打开方式可以配合使用,利用| *** 作符。 |
#include
using namespace std;
#include
void test(){
ofstream ofs;
ofs.open("test.txt",class="superseo">ios::out);
ofs<<"This is a test."<<endl;
ofs<<"This is a test."<<endl;
ofs<<"This is a test."<<endl;
ofs.close();
}
int main() {
test();
return 0;
}
Note: 文件 *** 作必须包含头文件 fstream;读文件可以利用 ofstream 或 fstream 类;打开文件需要指定 *** 作文件的路径以及打开方式;利用<<
可以向文件中写数据;文件 *** 作完毕需要关闭。
读文件步骤:
包含头文件,#include
;创建流对象,ifstream ifs;打开文件并判断文件是否打开成功,open(“file”,“读取方式”);读取数据,4中方法进行读取;关闭文件,ufs.close()。
#include
#include
using namespace std;
#include
void test() {
ifstream ifs;
ifs.open("test.txt", ios::in);
if (!ifs.is_open()) {
cout << "文件打开失败" << endl;
return;
}
/*
char buf[1024] = {0};
// 第一种读取方式
while (ifs >> buf) {
cout << buf << endl;
}*/
// 第二种读取方式
/*
while(ifs.getline(buf, sizeof(buf))) {
cout<
// 第三种读取方式
/*
string buf;
while (getline(ifs, buf)) {
cout << buf << endl;
}*/
// 第四种读取方式
char c;
while ((c = ifs.get()) != EOF) {
cout << c;
}
ifs.close();
}
int main() {
test();
return 0;
}
2.3 二进制读文件
#include
using namespace std;
#include
class Person {
public:
char m_Name[64];
int m_Age;
};
void test() {
ofstream ofs("person.txt",ios::out|ios::binary);
Person p = {"张三", 20};
ofs.write((const char *)&p, sizeof(Person));
ofs.close();
}
int main() {
test();
return 0;
}
**Note:**文件输出流对象可以通过write函数,以二进制的方式写数据。
2.4 二进制写文件#include
using namespace std;
#include
class Person {
public:
char m_Name[64];
int m_Age;
};
void test() {
ifstream ifs;
ifs.open("person.txt",ios::in|ios::binary);
if(!ifs.is_open()){
cout<<"文件打开失败!"<<endl;
return;
}
Person p{};
ifs.read((char*)&p,sizeof(Person));
cout<<"姓名:"<<p.m_Name<<"\n年龄:"<<p.m_Age<<endl;
ifs.close();
}
int main() {
test();
return 0;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)