• c++读取文件操作和写入文件


    c++读取文件操作和写入文件

    在C++中与读取文件和写入文件简单操作有关的类分别有ifstream(文件读入)、ofstream(文件写出)、fstream (文件读入和写出)。

    名称作用
    ifstream文件读入
    ofstream文件写出
    fstream文件读入和写出

    对于文件操作操作输入输出类中具有一个open的函数用来打开文件使用的。其原型为:
    void open(const char* filename,int mode,int access);
    其中各个参数的含义如下表:

    参数作用
    filename需要打开的文件地址名称
    mode打开文件的方式
    access打开文件的属性

    其中打开文件的方式在类中ios中定义的常用值为下表,在使用过程中可以用“|”把以上属性连接起来表或的关系,如ios::out|ios::binary

    mode常用的值作用
    ios::app以追加的方式打开文件
    ios::ate文件打开后定位到文件尾,ios:app就包含有此属性
    ios::binary以二进制方式打开文件,缺省的方式是文本方式。两种方式的区别见前文
    ios::in文件以输入方式打开(文件数据输入到内存)
    ios::out文件以输出方式打开(内存数据输出到文件)
    ios::nocreate不建立文件,所以文件不存在时打开失败
    ios::noreplace不覆盖文件,所以打开文件时如果文件存在失败
    ios::trunc如果文件存在,把文件长度设为0

    打开文件的属性取值是:

    access常用的值作用
    0普通文件,打开访问
    1只读文件
    2隐含文件
    4系统文件

    再打开文件的过程中,仅需要调用open函数就可以打开文件并对文件内容进行操作。如

    查看代码

    由上面可以看出在写入和写出时,用到了一个重要的运算符插入器(<<)。其实在stream类中存在两个重要的运算分别是插入器(<<)和析取器(>>)在c++中cin和cout经常可以被看到它主要实现的I/O操作。下面对插入器和析取器进行解释:
      1、插入器(<<)
     向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout<<"Write Stdout"<<'\n';就表示把字符串"Write Stdout"和换行字符('\n')输出到标准输出流。
     2、析取器(>>)
     从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin>>x;就表示从标准输入流中读取一个指定类型的数据。

    同时文件操作完成后需要对文件进行关闭,让文件进行保存。使用myfile.close();myfile为你定义这个操作名称。

    使用者在操作O的时候,常常使用到文件指针,通俗来讲就是你在编辑文本文件时插入文本的位置,被称为文件指针。对文件指针的位置我们可以通过seekg函数进行操作

    文件指针位置在c++中的用法:

    seekg常用的值含义
    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个字节的位置

    常用的错误判断方法:

    good() 如果文件打开成功

    bad() 打开文件时发生错误

    eof() 到达文件尾

    文件操作的代码解释

    1. #include
    2. #include
    3. #include
    4. #include
    5. using namespace std;
    6. int main()
    7. {
    8. ofstream outfile("F:\\zmxs\\date.txt",ios::app);
    9. if(outfile.good())
    10. {
    11. outfile<<"写入!"<
    12. outfile.close();
    13. }
    14. string temp;
    15. ifstream myfile("F:\\zmxs\\date.txt");
    16. ///直接使用while会读取不到第一行
    17. do
    18. {
    19. myfile >> temp;
    20. cout<
    21. }while(getline(myfile,temp));
    22. myfile.close();
    23. }

  • 相关阅读:
    41-数组 _ 数组作为函数参数
    asp.net core之中间件
    任务(task)
    [LeetCode]-贪心
    SQL 的优化
    7-1 数的范围
    项目打包找不到surefire的包(mvn install导包到本地仓库pom损坏导致打包问题)
    perf工具与perf report children的含义
    python网络爬虫实例
    【C#】转换8位或16位像素值为Bitmap
  • 原文地址:https://blog.csdn.net/chengxuyuanlaow/article/details/127544593