[C++]文件操作

1.简介

cpp中文件的操作跟输入输出的cin/cout类似,文件被当作流来进行操作。
cpp中提供文件操作的头文件是:#include 。
其中ifstream类是读取操作,ofstream类是写操作,fstream类是读写操作。

2.基本操作

2.1打开

打开一个文件的方法是:

ofstream out;
out.open("test.txt");//1 这种方式:ifstream默认为ios::in模式,ofstream默认为ios::out模式,iostream默认为ios::in | ios::out模式
out.open("test.txt",ios::out|ios::in);//2,第二个参数可选

open方法的第二个参数可以设为:

参数说明
ios::in打开文件作为读操作
ios::out打开文件作为写操作
ios::binary打开文件以二进制的方式打开
ios::ate打开文件并且当前的位置为文件的末尾
ios::trunc如果已经打开文件,那么之前写入的流将被替换掉
ios::app写操作将在文件的末尾进行
2.2关闭

文件的关闭操作比较简单,只需要执行out.close()即可。
注意的是,文件只要打开之后,就必须在所有操作完成之后关闭,不然会引起异常。

2.3读取和写入

写入操作比较简单,跟cout的操作类似:

ofstream out;
out.open("test.txt");
out<<"test string"<<endl;
out.close();

读取操作稍微有点不同,具体的示例如下:

string line;
ifstream in;
in.open("test.txt");
if(in.is_open()){
while(getline(in,line)){
cout>>line<<endl;
}
}
in.close();
2.4定位

ifstream和ofstream中都包含了一个内部的变量用来保存下一个将要操作的元素位置。ifstream的称为get position,ostream的称为put position。注意的是,用来表示位置的类型是streampos或者streamoff类型,其中streampos类型在fpos中定义,并且能从streamoff转换而来或者转换成streamoff;streamoff是整型或长整型的别名。

2.4.1 ifstream

获取当前元素位置:tellg();
移动到指定位置:seekg(postion); or seek(offset,direction);其中direction的类型有三种:iso::beg,ios::cur,ios::end。

2.4.2 ofstream

获取当前元素位置:tellp();
移动到指定位置:seekp(postion); or seep(offset,direction);其中direction的类型有三种:iso::beg,ios::cur,ios::end。

2.4.3 示例
ifstream in("test.txt",ios::binary);
    string str;
    if(in.is_open()){
        ios::streampos position=in.tellg();
        std:cout<<"current position is"<<position<<endl;
        in.seekg(10,ios::cur);
        position=in.tellg();
        std::cout<<"current position is"<<position<<endl;
        std::cout<<"file length is"<<position<<endl;
    }else{
         std::cout<<"error"<<endl;
    }

    in.close();
2.4缓存

输入输出流保存在内存中,当缓存去满了或者关闭了或者有显式的操作(flush,endls)或者执行了sync方法都将会导致内存中保存的输入输出流写入物理介质中,比如磁盘。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值