c++中fstream对txt文件的读写操作


c语言中,对文件的操作一般通过文件指针FILE*来进行。然而,c++有着更为便捷的操作——文件流。好吧,其实我也不是很熟悉“流”的具体概念,等以后深入学习后,一定会把这个坑填上。

在此简单记录一下文件流fstream的用法;

可以简单得把它看成一个类,包含在头文件<fstream>中。当我们写上#include<fstream>后,就可以使用ifstream,ofstream,fstream三个类来定义对象了。

例如:ifstream  infile(); 成功定义了一个名叫infile的对象,可以调用ifstream中的函数;

但是,此时infile只是一个对象,并没有和我们需要读取的文件产生关联。

目前,我发现共有两种方式

1、通过ifstream的函数 .open(),这个函数有几种重载的方式

  1. 首先,关于路径,一共有5种方式:
    1. 相对路径,当你所要操作的文件与你的.cpp文件在同一个目录下,就可以使用相对路径,相对路径必须将文件格式写清楚,例如:infile.open("ans.txt");
    2.   绝对路径,可以搜索到电脑中所有的文件,但路径必须正确,例如:infile.open("D:\Codeblock\test\formulations.txt");
    3. 可以填入一个是指向字符串文件名的指针,例如:const char* str=”ans.txt"; infile.open(str);
    4. 可以填写一个内容等于文件名字的string常量,例如:const string str = “ans.txt";  infile.open(str);
    5. 如果不是const string ,而是string,那必须使用infile(str.c_str());     此处.c_str()是string的一个成员函数,目标是将string变成const string .关于string和const string 之间的区别嘛,emmmmmm,有空一定填上
  2. ios::app     //在文件末尾补入
    ios::ate      //定位到文件末尾,app包含此项属性
    ios::binary //以二进制的方式读取文件
    ios::in        //读文件
    ios::out      //输入文件
    ios::nocreate //不创造,如果文件不存在,则失败
    ios::noreplace//不覆盖,如果文件存在,则失败
    ios::trunc      //如果文件存在,则将文件内容清空

    3.多种文件的打开方式能使用或运算("|") ,例如:infile("ans.txt",ios::app | ios::out);

         4.打开文件的属性,prot.好像不常用,等哪天用到了,再来写

2. 第二种打开方式则更为简单,利用初始化的方法,例如 ifstream infile("ans.txt");

    当然,初始化的时候,也可以加上mode,例如 ifstream infile("ans.txt",ios::app);

.is_open() 的用法

#include <fstream>

using namespace std;

int mian()
{
    ifstream infile ;
    infile.open("ans.txt");
    
    if(!infile.is_open())
    {
         cout<<"Wrong"<<endl;
         return 0;
    }    

.......................
    
     return 0;
} 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM