目录
文件操作
程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放
通过文件可以将数据持久化
c++中对文件操作需要包含头文件
文件类型分为两种:
- 文本文件 – 文件以文本的ASCII码形式存储在计算机中
- 二进制文件 – 文件以文本的二进制形式存储在计算机中
操作文件的三大类:
- ofstream:写操作
- ifstream:读操作
- fstream:读写操作
文本文件
写文件
写文件步骤如下:
-
包含头文件
include
-
创建流对象
ofstream ofs;
-
打开文件
ofs.open(“文件路径”, 打开方式);
-
写数据
ofs << “写入的数据”;
-
关闭文件
ofs.close();
文件打开方式:
打开方式 | 解释 |
---|---|
ios::in | 为读文件而打开文件 |
ios::out | 为写文件而打开文件 |
ios::ate | 初始位置:文件尾 |
ios::app | 追加方式写文件 |
ios::trunc | 如果文件存在,先删除再创建 |
ios::binary | 二进制方式 |
注意:文件打开方式可以配合使用,利用 | 操作符
例如:用二进制方式写文件 ios::binary | ios::out
void test01()
{
//写数据
ofstream ofs;
ofs.open("test.txt", ios::out);
ofs << "name: little john" << endl;
ofs << "gender: male" << endl;
ofs << "age: 18" << endl;
ofs.close();
}
读文件
写文件步骤如下:
-
包含头文件
include
-
创建流对象
ifstream ifs;
-
打开文件并判断文件是否打开成功
ifs.open(“文件路径”, 打开方式);
-
读数据
四种方式读取
-
关闭文件
ifs.close();
void test01()
{
ifstream ifs;
ifs.open("test.txt", ios::in);
if (!ifs.is_open()) cout << "file open false" << endl;
else cout << "file open success" << endl;
//读数据
//1.
char buf1[1024] = {0};
while ( ifs >> buf1 )
{
cout << buf1 << endl;
}
//2.
char buf2[1024] = {0};
while (ifs.getline(buf2,sizeof(buf2)))
{
cout << buf2 << endl;
}
//3.
string buf3;
while (getline(ifs, buf3))
{
cout << buf3 << endl;
}
//4.
char c;
while ((c = ifs.get()) != EOF)
{
cout << c;
}
ifs.close();
}
二进制文件
以二进制的方式对文件进行读写操作
打开方式要指定为ios::binary
写文件
二进制文件写文件主要利用流对象调用成员函数write
函数原型:ostream& write(const char * buffer, int len);
参数解释:字符指针buffer指向内存中一段存储空间。len是读写的字节数
//二进制文件 写文件
class Person
{
public:
char m_Name[64];
int m_Age;
};
void test01()
{
ofstream ofs("person.txt", ios::out | ios::binary);
Person p = {"John", 18};
ofs.write((const char *)&p, sizeof(Person) );
ofs.close();
}
读文件
二进制方式读文件主要利用流对象调用成员函数read
函数原型:istream& read(char * buffer, int len);
参数解释:字符指针buffer指向内存中一段存储空间。len是读写的字节数
void test02()
{
ifstream ifs("person.txt", ios::in | ios::binary);
if (!ifs.is_open()) cout<<"false"<<endl;
Person p;
ifs.read((char *)&p, sizeof(Person));
cout<<"name:" <<p.m_Name<<" age:"<<p.m_Age<<endl;
ifs.close();
}
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
暂无评论内容