C++文件操作

C++中把文件当作类,有三个类:ifstream,ofstream,fstream。头文件如下

#include<ifstream>
#include<ofstream>
#include<fstream>

其中ifstream实例化后的对象只能读取文件,ofstream实例化后的对象只能写入文件,而fstream实例化的对象读写文件都可以。

文件操作的一般步骤是什么样的呢?

  1. 打开文件(打开方式)
  2. 判断文件是否打开成功(这一步非常重要,否则在debug的时候会很麻烦)
  3. 进行文件操作
  4. 操作结束后关闭文件(关闭文件也很重要,如果没有关闭文件,那么后面其他代码如果要再次对该文件进行操作就会失败,因为该文件已经在另外一个文件对象中打开,就有点像windows中你无法删除一个打开中的文件,只有在该文件关闭后才能删除。
  • 打开文件

    法1:先创建一个无参文件对象,然后通过open成员函数打开

    #include<fstream>
    fstream file1;   //创建无参文件对象
    file1.open("1.txt",ios::in|ios::out) //第一个参数为文件名,第二个参数为打开方式
    //打开方式如下
    //ios::in ,读的方式打开
    //ios::out,写的方式打开
    //ios::nocreate,不创建文件
    //ios::noreplace,不替换文件
    //ios::binary,以二进制文件打开
    //ios::trunc ,文件不存在创造文件
    //ios::app ,追加的方式打开文件
    //ios::ate  在已有文件,文件指针在末尾
    //可以通过位或符号|进行组合(两种及以上),比如可读写就是ios::in|ios::out
    

    法2:直接通过构造函数来打开文件

    #include<ifstream>
    ifstream file2("1.txt",ios::in)
    
  • 判断文件打开是否成功

    法1:使用成员函数is_open()

    if(!file1.is_open())
        cout<<"文件打开失败"<<endl;
    

    法2:直接用文件对象判断

    if(!file1)
        cout<<"文件打开失败"<<endl;
    
  • 文件操作(读写)

    法1:使用流的方式,读取的时候会忽略空格和换行,可以按照字符读取,也可以按照字符串读取碰到空格则认为字符串结束。

    fstream file3("1.txt",ios::in);
    fstream file4("2.txt",ios::out|ios::trunc)
    if(!file3)cout<<"文件打开失败"<<endl;
    while(file3)
    {
        string a; 
        file3>>a; //把file3的第一个字符串赋值给a
        file4<<a;//把a的内容赋值给file4;
    }
    file3.close(); //关闭文件
    file4.close();  //关闭文件
    

    法2:使用成员函数get(),put()只能一个一个字符读取,不会忽略空格

    fstream file3("1.txt",ios::in);
    fstream file4("2.txt",ios::out|ios::trunc)
    if(!file3)cout<<"文件打开失败"<<endl;
    while(file3)
    {
        char a; 
        file3.get(a); //把file3的第一个字符赋值给a
        file4.put(a);//把a塞入file4;
    }
    file3.close(); //关闭文件
    file4.close();  //关闭文件
    

    [[C++文件的编译问题]]

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值