C++中对文件操作需要包含头文件<fstream>
文件类型分为两种:
- 文本文件:文件以文本的ASCLL码形式存储在计算机中
- 二进制文件:文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂他们
操作文件的三大类:
ofstream
:写操作ifstream
:读操作fstream
:读写操作
1. 文本文件
1.1 写文件
写文件步骤如下:
#include <fstream>
ofstream ofs; //创建流对象
ofs.open("文件路径",打开方式);
ofs << "写入的数据";
ofs.close();
文件打开方式:
打开方式 | 解释 |
---|---|
ios::in | 为读文件而打开文件 |
ios::out | 为写文件而打开文件 |
ios::ate | 初始位置:文件为 |
ios::app | 追加方式写文件 |
ios::trunc | 如果文件存在先删除,再创建 |
ios::binary | 二进制方式 |
注意:文件打开方式可以配合使用,利用|
操作符
例如:用二进制方式写文件:ios::binary | ios::out
代码实现写文件:
#include <iostream>
using namespace std;
#include <fstream>
void test()
{
//1、包含头文件 <fstream>
//2、创建流对象
ofstream ofs;
//3、指定打开方式
ofs.open("test.txt", ios::out);
//4、写内容
ofs << "姓名:张三" << endl;
ofs << "性别:男" << endl;
ofs << "年龄:18" << endl;
//5.关闭文件
ofs.close();
}
int main()
{
test();
return 0;
}
总结:
- 写文件可以利用ofstream,或者fstream类
- 利用ofs.open函数打开文件
- close关闭文件
1.2 读文件
读文件步骤如下:
#include //1、包含头文件
ifstream ifs; //2、创建流对象
ifs.open(“”,); //3、打开文件并判断文件是否打开成功
四种方式读取 //4、读数据
ifs.close(); //5、关闭文件
代码实现读文件操作
//文本文件 读文件
void test02()
{
//1、包含头文件 <fstream>
//2、创建流对象
ifstream ifs;
//3、打开文件 并且判断是否打开成功
ifs.open("test.txt", ios::in);
if( !ifs.is_open() ){
cout << "文件打开失败" << endl;
return;
}
//4、读数据
//第一种
char buf[1024] = { 0 };
while (ifs >> buf) {
cout << buf << endl;
}
//第二种
char buf[1024] = { 0 };
while ( ifs.getline(buf, sizeof(buf)) ) {
cout << buf << endl;
}
//第三种
//使用getline函数需要包含头文件<string>
string buf;
while (getline(ifs, buf)) {
cout << buf << endl;
}
//第四种
char c;
while (c = ifs.get() != EOF) { //单个字符来读
cout << c;
}
//5、关闭文件
ifs.close();
}
总结:
- 读文件可以利用ifstream,或者fstream类
- 利用is_open函数可以判断文件是否打开成功
- close关闭文件
2. 二进制文件
以二进制方式对文件进行读写操作
打开方式:ios::binary
2.1 写文件
使用成员函数write来写文件
函数原型:ostream& write(const char * buffer, int len);
参数解释:字符指针buffer指向内存中一段存储空间,len是读写的字节数(所用代码sizeof()
)
2.1 读文件
使用成员函数read来写文件
函数原型:istream& read(char * buffer, int len);
参数解释:字符指针buffer指向内存中一段存储空间,len是读写的字节数(所用代码sizeof()
)