C++标准IO-文件的操作

来源:互联网 发布:外汇软件mt4骗局 编辑:程序博客网 时间:2024/05/21 07:52

ofstream类的默认构造函数:
ofstream::ofstream(const char* filename,int mode=ios::out,int openprot=filebuf::openprot);
其中filename表示要打开的文件名
    mode    表示打开文件的方式
    prot    打开文件的属性
注意:
mode可以选用下面的打开方式:
ios::app    以追加的方式打开
ios::ate    文件打开后定位到文件结尾处
ios::binary    以二进制的方式打开文件,缺省的方式是文本方式
ios::in        文件以输入方式打开
ios::out    文件以输出方式打开
ios::trunc    如果文件存在,那么将文件的长度设置成0
上述的打开方式可以用‘|’符号连接起来

openprot可以选用下面的属性值:
0    普通文件,打开访问
1    只读文件
2    隐含文件
4    系统文件
可以使用‘|’或者“+”把上述属性连接起来,如3或1|2就是以只读和隐含属性打开文件。
下面举个例子:
#include <fstream>
using namespace std;
int main(){
    ofstream myfile("test.txt",ios::out||ios::trunc,0);
    myfile<<"教教你网络中心"<<endl<<"网址:"<<"www.jiaojiaoni.com"<<endl;
    myfile.close();
}

ios::app是追加模式,在使用追加模式的时候同时进行文件状态判断是个很好的习惯:
#include <iostream>
#include <fstream>
using namespace std;
int main(){
    ofstream myfile("test.txt",ios::app,0);
    if(!myfile){
        cout<<"文件打开失败,目标文件可能是只读!";
        exit(1);
    }
    myfile<<"教教你网络中心"<<endl<<"网址:"<<"www.jiaojiaoni.com"<<endl;
    myfile.close();
}

上述的操作都是在打开文件的时候指定了打开的文件,现在我们使用open函数来打开文件
#include <iostream>
#include <ofstream>
using namespace std;
int main(){
    ofstream myfile;
    myfile.open("test.txt",ios::out||ios::app,0);
    if(!myfile){   //可以使用myfile.fail()来代替
        cout<<"文件创建失败,磁盘不能写或者此文件只读!"<<endl;
        exit(1);
    }
    myfile<<"教教你网络中心"<<endl<<"网址:"<<"www.jiaojiaoni.com"<<endl;
    myfile.close();
}

到现在,我们可以将一个文件的内容读出来了,但是我们还没有写怎么读啊?好吧,现在开始写一个文件:
现来一个例子:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main(){
    ifstream myfile;
    myfile.open("test.txt",ios::in,0);
    if(!myfile){
        cout<<"文件读错误!"<<endl;
        exit(1);
    }
    char ch;
    string content;
    while(myfile.get(ch)){
        content+=ch;
        cout.put(ch);//cout<<ch;这么写也是可以的
    }
    myfile.close();
    cout<<content<<endl;
}

上面介绍了ifstream ofstream,下面我们使用fstream类来对文件进行读写。
#include <iostream>
#include <fstream>
using namespace std;
int main(){
    fstream myfile;
    myfile.open("test.txt",ios::out|ios::app,0);
    if(!myfile){
        cout<<"文件打开失败,文件属性可能不对!"<<endl;
        exit(1);
    }
    myfile<<"教教你网络中心"<<endl<<"网址:"<<"www.jiaojiaoni.com"<<endl;
    myfile.close();
    
    myfile.open("test.txt",ios::in,0);
    if(!myfile){
        cout<<"文件读错误,文件丢失了没?"<<endl;
        exit(1);
    }
    char ch;
    while(myfile.get(ch))
        cout.put(ch);
    myfile.close();
}
由于fstream类可以对文件同时进行读写操作,所以对它的对象进行初始话的时候一定要显式的指定mode和openprot参数。

原创粉丝点击