文件
一、操作
- 操作过程
- 打开文件:建立一个文件和流的对应关系
- 读写文件
- 关闭文件:释放文件所占用的资源
- C++的文件类
二、文件的打开与关闭
⚠️upload failed, check dev console
-
打开
-
打开方式
-
open函数(函数原型:
void open(const char *szFilename, int mode)
)-
argu1
指针指向含路径的文件名 -
argu2
文件打开的模式控制符 适用对象 作用 ios::in ifstream, fstream 只读存在文件 ios::out ofstream, fstream 只写,新建文件 ios::app ofstream, fstream 在文件尾部追加,不存在则新建 ios::ate ifstream 从尾部只读 ios::trunc ofstream 单独使用,同out ios::binary 三个皆可 在文件尾部追加 ios::in|ios::out fstream 读写存在文件 ios::in|ios::out|ios::trunc 读写文件,存在清楚内容,不存在新建 文件打开模式通过
|
来组合
-
-
定义流对象时,通过构造函数打开
-
-
注意:要判断文件是否打开
-
关闭
-
file.close();
三、写入文件
- 写入与在屏幕上输出类似,使用流
#include <fstream>
using namespace std;
int main(){
fstream outFile("text.txt",ios::out);
if(!outFile){
cout << "open failed";
exit(0);
}
outFile << 5 << "string" << 1.2;
outFile.close(); //关闭文件
return 0;
}
四、读文件
- 同上
#include <fstream>
using namespace std;
int main(){
fstream outFile("text.txt",ios::out);
if(!outFile){
cout << "open failed";
exit(0);
}
int data;
outFile >> data;
outFile.close(); //关闭文件
return 0;
}
五、二进制文件的读写
-
二进制文件使一标准数据的二进制表示方式存储,读取数据以字节为单位
-
优点:
-
节省空间
- 数据规整
-
便于索引
-
打开时,需要
|ios::binary
-
读写文件:
-
读:
istream &read(char *buff, int count);
- 作用:从文件当前位置读count字节,存放到buff中
int gcount()
- 作用:当前读的字节数
-
写:
ostream &write(char *buff, int count);
- 作用:将从buff开始的count字节写到文件的当前位置
-
程序示例
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
int main(){
fstream file;
char msg[] = "This is a test message", buf[20];
file.open("text.txt",ios::out|ios::in|ios::trunc|ios::binary);
if(!file){
exit(2);
}
file.write(msg, sizeof(msg));
file.seekp(0,ios::beg);
file.read(buf,20);
cout << file.gcount() << endl;
cout << buf << endl;
return 0;
}
## 六、文件的定位操作
- 取文件当前位置的方法
int tellg()
//g代表getint tellp()
//p代表put
- 改变文件指针的当前位置
seekg(int offset, int mode)
seekp(int offset, int mode)
- mode:
ios::beg
:文件开头ios::cur
:当前位置ios::end
:文件结尾
- 单位:字节