b站黑马程序员C++课程笔记
C++文件操作
程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放
可以通过文件将数据持久化
C++中对文件操作需要包含头文件
文件类型为两种:
- 文本文件 - 文件以文本的ASCII码形式存储在计算机中
- 二进制文件 - 文件以文本二进制形式存储在计算机中,用户无法直接读懂
操作文件的三大类:
- ofstream:写操作
- ifstream:读操作
- fstream:读写操作
写文件
代码流程
1.包含头文件
#include<fstream>
2.创建流对象
ofstream ofs;
3.打开文件
ofs.open("文件路径",打开方式);
4.写数据
ofs << "写入的数据";
5.关闭文件
ofs.close();
文件打开方式:
文件打开方式可以配合使用 ios::binary | ios::out
...
#include<fstream> //包含头文件
void test01()
{
ofstream ofs; //创建流对象
ofs.open("test.txt", ios::out);// 指定打开方式,创建在当前目录
ofs << "Hello!" << endl;//写数据
ofs.close();//关闭文件
}
int main()
{
test01();
...
}
读文件
代码流程
1.包含头文件
#include<fstream>
2.创建流对象
ifstream ifs;
3.打开文件并判断文件是否打开成功
ifs.open("文件路径",打开方式);
4.写数据
四种方式读取
5.关闭文件
ifs.close();
代码
...
#include<fstream> //包含头文件
void test01()
{
ifstream ifs; //创建流对象
ifs.open("test.txt", ios::in);// 指定打开方式,创建在当前目录
if(!ifs.is_open()) //is_open()可以判断文件是否打开成功
{
cout << "文件打开失败" << endl;
return;
}
//读数据的四种方式
//第一种
//char buf[1024] = {0};
//while(ifs >> buf)
//{
// cout << ifs << endl;
//}
//第二种
//char buf[1024] = {0};
//while(ifs.getline(buf, sizeof(buf)))
//{
// cout << buf << endl;
//}
//第三种
//string buf;
//while(getline(ifs, buf))
//{
// cout << buf << endl;
//}
//第四种 不太推荐 一个一个字节读
char c;
while((c = ifs.get()) != EOF) //EOF end of file
{
cout << c;
}
ofs.close();//关闭文件
}
int main()
{
test01();
...
}