一、对于文件的认识:
程序运行时产生的数据都属于临时文件,程序一旦运行结束都会被释放;
通过文件可以将数据持久化;
C++中对文件操作都需要包含头文件< fstream >;
文件类型分为两种:
(1)文本文件-文件以文本的ASCII码形式存储在计算机中;
(2)二进制文件-文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们。
操作文件的三大类:
(1)ofstream: 写操作;
(2)ifstream: 读操作;
(3)fstream:读写操作。
此图是对文件的几种打开方式
二、文本文件的写
1,包含头文件
#include <fstream>
2,创建流对象
ofstream ofs;
3,打开文件
ofs.open("文件路径",打开方式);
4,写数据
ofs<<"写入的数据";
5,关闭文件
ofs.close();
注意:文件打开方式可以配合使用,利用 | 操作符;
例如:用二进制方式写文件 ios::binary | ios::out;
#include <iostream>
using namespace std;
#include <string>
#include <fstream>
void test1()
{
ofstream ofs;
ofs.open("test.txt", ios::out);
ofs << "姓名:张三" << endl;
ofs << "性别:男" << endl;
ofs << "年龄:19" << endl;
ofs.close();
}
int main()
{
test1();
system("pause");
return 0;
}
三、读取文件的四种方式
#include<iostream>
#include<fstream>
using namespace std;
void test(){
ifstream ifs;
ifs.open("text.txt",ios::in);
if(!ifs.is_open()){
cout << "文件打开失败!!"<<endl;
return;
}
//4、读数据
// 1、第一种数据:
// char buf[1024] = {0};
/*
这行代码 while (ifs >> buf) 是一个循环结构,它用于连续从输入流 ifs 读取数据到缓冲区 buf 中,直到遇到文件结束或其他某种错误条件。
具体来说,ifs >> buf 是一个输入操作,它将尝试从输入流 ifs 中读取数据到缓冲区 buf 中。如果读取成功,这个表达式将返回一个非零值(通常是 true),否则返回零值(通常是 false)。
*/
// while(ifs >> buf){
// cout << buf <<endl;
// }
// // 2、第二种数据
// char buf[1024] = {0};
// while(ifs.getline(buf,sizeof(buf))){
//
// cout << buf <<endl;
// }
// 3、第三种
// string buf;
// while(getline(ifs,buf)) {
// cout << buf <<endl;
// }
//
// 4、第四种
char c;
while((c=ifs.get()) != EOF ){
cout << c;
}
ifs.close();
}
int main(){
test();
return 0;
}