c++ 读写文件

≡放荡痞女 提交于 2019-12-29 17:59:38

建立流对象:

    输入文件流类(执行读操作):ifstream  in;

    输出文件流类(执行写操作):ofstream  out;

使用成员函数open打开函数:

 ios::in                       以输入方式打开文件(读操作)

 ios::out        以输出方式打开文件(写操作),如果已经存在此名字的文件夹,则将其原有内容全部清除

 ios::app                    以输入方式打开文件,写入的数据增加至文件末尾

 ios::ate                     打开一个文件,把文件指针移到文件末尾

 ios::binary                 以二进制方式打开一个文件,默认为文本打开方式

如:

ofstream ofile;
ofile.open("zhongju.txt"); //默认为 out 覆盖

读文件:

istream& getline (char* s, streamsize n );
istream& getline (char* s, streamsize n, char delim );

从istream中读取至多n个字符(包含结束标记符)保存在s对应的数组中。即使还没读够n个字符,

如果遇到delim或 字数达到限制,则读取终止,delim都不会被保存进s对应的数组中。

 bool getline(istream &in, string &s)

直到出现以下情况为止:

注意是 string 

•读入了文件结束标志

•读到一个新行(有重载函数可以指定行分隔符,默认是"\n".)

•达到字符串的最大长度

–如果getline没有读入字符,将返回false,可用于判断文件是否结束.

文件指针

ios::beg 文件头
ios::end 文件尾
ios::cur 当前位置
例子:
file.seekg(0,ios::beg); //让文件指针定位到文件开头 
file.seekg(0,ios::end); //让文件指针定位到文件末尾 
file.seekg(10,ios::cur); //从当前位置向文件方向移动10个字节 
file.seekg(-10,ios::cur); //让从当前位置向文件开始方向移动10个字节 
file.seekg(10,ios::beg); //让文件指针定位到离文件开头10个字节的位置 

判断文件是否为空

ifstream ifile;

ifile.open(filepath);//从filepath 中得到题目

ifile.get(); //先读取一个字符
if (ifile.eof()) {
    printf("文件无数独题目题目.\n");
	return 0;
}
ifile.seekg(0, ios::beg);//将文件指针定位到开头
//....后续正常读

错误判断方法: 

good() 如果文件打开成功
bad() 打开文件时发生错误
eof() 到达文件尾 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!