#include "iostream"
#include "fstream"
using namespace std;
/*
* 文件操作
*
* 程序运行时产生的数据都属于临时数据,程序一旦结束都会被释放
* 通过文件可以将数据持久化
* C++中对文件操作需要包含头文件
*
* 文件类型分为两种:
* 文本文件:文件以文本的ASCII码形式存储在计算机中
* 二进制文件:文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂他们
*
* 操作文件的三大类:
* 1.ofstream:写操作
* 2.ifstream:读操作
* 3.fstream:读写操作
*
* 写文件:
* 1.包含头文件 #include
* 2.创建流对象 ofstream ofs;
* 3.打开文件 ofs.open("文件路径",打开方式);
* 4.写数据 ofs<<"写入的数据";
* 5.关闭文件 ofs.close();
*
* 文件打开方式:
* ios::in 为读文件而打开文件
* ios::out 为写文件而打开文件
* ios::ate 初始位置:文件尾
* ios::app 追加方式写文件
* ios::trunc 如果文件存在先删除,再创建
* ios::binary 二进制方式
* 注意:文件打开方式可以配合使用,利用|操作符
* 例如:用二进制方式写文件 ios:binary|ios:out
*
*/
//文本文件 写文件
void test01(){
//1.包含头文件
//2.创建流对象
ofstream ofs;
//3.指定打开的方式
ofs.open("test.txt",ios::out);
//4.王文件中写内容
ofs<<"姓名:张三"<<endl;
ofs<<"性别:男"<<endl;
ofs<<"年龄:18"<<endl;
//5.关闭文件
ofs.close();
}
int main() {
test01();
return 0;
}
#include "iostream"
#include "fstream"
using namespace std;
/*
* 读文件
*
* 读文件和写文件步骤相似
*/
void test01() {
ifstream ifs;
ifs.open("test.txt", ios::in);
bool boolTemp = ifs.is_open();
if (!boolTemp) {
cout << "文件打开失败" << endl;
return;
}
//4.读数据
//第一种
// char buf[1024]={0};
// while(ifs>>buf){
// cout<
// }
// //第二种
// string buf;
// while(getline(ifs,buf)){
// cout<
// }
//第三种
char c;
while ((c = ifs.get()) != EOF) { //EOF 文件结果尾部的标志
cout << c;
}
//5.关闭文件
ifs.close();
}
int main() {
test01();
return 0;
}
#include "iostream"
using namespace std;
#include "fstream"
/*
* 二进制读写文件
*
* 二进制方式文件主要利用流对象调用成员函数 write
* 函数原型 ostream & write(const char * buffer,int len)
*/
class Person {
public:
char m_Name[64]; //姓名
int m_Age; //年龄
};
void test01() {
//1.头文件
//2.创建流对象
ofstream ofs;
//3.打开文件
ofs.open("person.txt", ios::out | ios::binary);
//4.写文件
Person p = {"张三", 19};
ofs.write((const char *) &p, sizeof(p));
//5.关闭文件
ofs.close();
}
//读文件
void test02() {
//1.头文件
//2.创建流对象
ifstream ifs;
//3.打开文件
ifs.open("person.txt", ios::in | ios::binary);
//4.写文件
if (!ifs.is_open()) {
cout << "文件打开失败" << endl;
return;
}
Person p;
ifs.read((char *) &p, sizeof(p));
cout << "姓名:" << p.m_Name << ";年龄:" << p.m_Age << endl;
//5.关闭文件
ifs.close();
};
int main() {
test01();
test02();
return 0;
}