c++ 文件的简单操作

lixianhu1998 2020-01-30 原文

c++ 文件的简单操作

文件的读取操作

在程序设计中,文件常用的操作不外乎——打开、读、写、流指针操作、关闭。我日常中使用的比较多,但从来 没有细细总结今天就总结下具体的用法。

相关概念

计算机上的文件其实是数据的集合,对文件的读写其实是对数据的读写。
文件可以大致分为两种:文本文件和二进制文件。  
1、文本文件:它的每一个字节存放的是一个ASCII码,代表一个字符。
2、二进制文件:将内存中的数据按照其在内存中的存储形式原样存放在磁盘上。我们用记事本打开则是乱码。

文件的路径

文件的相对路径(重在理解)——英文的双引号
定义:目标文件相对于当前文件的路径。
表达形式:
(1)”./“或”.”表示显示当前目录,也可以省略,表示默认当前目录
(2)”…/”或”…”表示返回到上一级的目录。
(3)如果有多个上一级目录,可以使用多个“…/”或”…”。

文件的打开方式

(三)文件的打开方式
ios::in 以输入方式打开文件,支持读数据流。如果文件不存在会找不到文件。
ios::out 以输出方式打开文件,支持写数据流。如果文件不存在则新建,如果文件存在就清空其原有内容。
ios::app 输出的数据追加到文件末尾,只支持读,不支持写
ios::ate 打开一个文件,并将指针定位到文件末尾
ios::trunc 打开一个文件,如果文件不存在则新建,如果存在,则清空原有文件中的内容
ios::binary 以二进制方式打开文件,如果不指定则默认采用文本方式打开文件
说明:
①缺省时,默认为以输出和输入方式打开文件,支持读和写数据流。
②当以多种形式打开文件时,中间用运算符”|”(或)连接起来。如:
ios::in | ios::out 以输出和输入方式打开文件
ios::out| ios::binary 以输出方式打开一个二进制文件

数据流对象指针(简称“流指针”)

对文件进行读写操作首先必须要定义一个数据流对象指针。数据流对象指针有三种类型,在这里我只介绍一种我最常用的方式:fstream(头文件#include<fstream>
表示文件读取/写入流,对文件进行读和写操作,既可以将数据从存储设备读取到内存中,也可以将数据从内存写入存储设备中。
下面代码实例:

fstream  f1("F:\\DAAT.txt",ios::in | ios::out|ios::trunc);//定义一个名为f1的数据流指针,并且以in/out/trunc方式打开文件,支持读和写操作。
    if(!f1)cout<<"未找到文件"<<endl;

获取流指针的位置

(1)tellg( )
根据ANSI-C++ 标准,就是一个整数,代表当前读取流指针的位置;
long long m=f1.tellg( );//返回f1的位置
*设置读取流指针的位置
①seekg ( pos_type position );
(2)tellp( )
根据ANSI-C++ 标准,就是一个整数,代表当前写入流指针的位置;
long long m=f2.tellp( );//返回f2的位置

*设置写入流指针的位置
①seekp ( pos_type position );

文件的打开与关闭操作

*文件的open函数的具体使用:eg

         fstream f1,f2;//定义一个名为f1的数据流指针
         f1.open("D:\\a.txt"); //以读和写方式打开D盘中的a.txt文件,与f1("F:\\DAAT.txt",ios::in | ios::out|ios::trunc);这种方式结果一致。
         F2.open(“../a.txt”.ios::in);//以读方式打开当前目录的上级目录中的a.txt文件

*文件的关闭
文件的关闭非常重要,每次使用后必须关闭,不然会造成其他后果。
f1。close();即可

文本文件的写操作——符号”<<”

①定义一个数据指针流;(注:根据写操作选择对应的数据指针流类型)
②表达形式:数据指针流 << 被写入的对象;

char  b[]="李虎ftv句柄饱和度iyivbh oguobhnynbubo8ubu0nn  88898 76y8 9980 bhh";
    int i=0;
    fstream  f1("F:\\DAAT.txt",ios::in | ios::out|ios::trunc);//定义一个名为f1的数据流指针
    if(!f1)cout<<"未找到文件"<<endl;
    f1.seekg(ios::beg);  //重置数据流指针
    for (i=0;i<strlen(b);i++)
    {
        f1<<b[i];//依次将数组里面的东西写入文件中。

    }

文本文件的读操作——符号”>>”

①定义一个数据指针流;(注:根据读操作选择对应的数据指针流类型)
②表达形式:数据指针流 >> 读取后存储的对象;
注意:读取数据时按照文件中数据的格式读取。

法一:
nt  b[10];
fstream f2;//定义一个名为f2的数据流指针
    f2.open("D:\\a.txt"); //以读和写方式打开D盘中的a.txt文件
for (int i = 0; i < 10; i++) {
        f1 >> b[i] ;  //读取时会根据文件中的格式读取。
    }
f2.close();//关闭文件
//法二:
//char  b[]
    //f1.open("D:\\DAAT.txt"); //以读和写方式打开D盘中的a.txt文件
    //if(!f1)cout<<"未找到文件"<<endl;
    //f1.seekg(ios::beg);  //重置数据流指针
    //f1.getline(b,80,EOF);eof()函数是判断文件是否读到了末尾。
    //cout<<b<<endl;

二进制文件的读和写操作

此处我没有整理,大家可以参考他的这篇文章,写的很详细:https://blog.csdn.net/weixin_43956598/article/details/90694117

文件的其他函数操作

Is_open( ) 判断文件是否处于打开的状态。如果是,返回true;如果不是,返回false

eof() 判断读文件是否到达文件末尾。如果是,返回true;如果不是,返回false

bad() 如果在读写过程中出错,返回 true 。例如:当我们要对一个不是打开为写状态的文件进行写入时,或者我们要写入的设备没有剩余空间时,就会报错。

fail() 除了与bad() 同样的情况下会返回 true 以外,加上格式错误时也返回true ,例如当想要读入一个整数,而获得了一个字母的时候。

good() 这是最通用的:如果调用以上任何一个函数返回true 的话,函数返回 false 。

clear() 重置以上成员函数所检查的状态标志。

发表于
2020-01-29 23:59 
李显虎 
阅读(
评论(
编辑 
收藏

 

版权声明:本文为lixianhu1998原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/lixianhu1998/p/12241890.html

c++ 文件的简单操作的更多相关文章

  1. 【翻译】Keras.NET简介 – 高级神经网络API in C#

    Keras.NET是一个高级神经网络API,它使用C#编写,并带有Python绑定,可以在Tensorflow […]...

  2. shp系列(六)——利用C++进行Dbf文件的写(创建)

    上一篇介绍了shp文件的创建,接下来介绍dbf的创建。 推荐结合读取dbf的博客一起看! 推荐结合读取dbf的 […]...

  3. C# .NET 基本概念 – 未页

    1. private、 protected、 public、 internal 修饰符的访问权限。   pri […]...

  4. c# 误区系列(一)

    前言 整理很早以前认为的一些误区,准备整理一个系列。新手可以看下,然后大佬指点一下是否哪些地方错了。 正文 值 […]...

  5. c# WPF SVG 文件的引用(SharpVectors)

    阿里巴巴矢量图标库提供了大量的 SVG 图标:https://www.iconfont.cn/  但是 WPF […]...

  6. C#访问C++动态分配的数组指针

    C#访问C++动态分配的数组指针 项目中遇到C#调用C++算法库的情况,C++内部运算结果返回矩形坐标数组(事 […]...

  7. C# 给现有PDF文档添加页眉、页脚

    概述 页眉页脚是一篇完整、精致的文档的重要组成部分。在页眉页脚处,可以呈现的内容很多,如公司名称、页码、工作表 […]...

  8. 比特币入门之地址的离线生成与管理

    一、概述 在前面的课程中,我们使用节点软件的getnewaddress调用来创建 新的比特币地址,地址对应的私 […]...

随机推荐

  1. Leapms + cplex解决 混合整数规划问题

    CPleX是一个神秘的求解器, 听说久了就想用, 但是直接用有些困难, 尤其入门困难. 对初学者来说Leapm […]...

  2. 20 个 Laravel Eloquent 必备的实用技巧

    Eloquent ORM 看起来是一个简单的机制,但是在底层,有很多半隐藏的函数和鲜为人知的方式来实现更多功能 […]...

  3. 怎么在for循环中使用xlswrite函数把数据输出到Excel表格 && MATLAB 循环中用变量控制写入excel位置

    代码如下: clear all clc k=1; kk=[{char(\'r1\')},{char(\'T1\ […]...

  4. 使用LoopcRDP在家远程控制公司内网电脑(远程桌面)

    和Teamviewer这个软件差不多,穿透内网,适合没有公网ip或不能搞端口映射的电脑使用。比如公司的工作机, […]...

  5. Dubbo源码学习–优雅停机原理及在SpringBoot中遇到的问题

    Dubbo源码学习–优雅停机原理及在SpringBoot中遇到的问题 相关文章: Dubbo源码学 […]...

  6. centos8.2安装nvidia 1660s驱动及cuda10.2 – 丨o聽乄雨o丨

    centos8.2安装nvidia 1660s驱动及cuda10.2 2020-10-21 11:37  丨o […]...

  7. Kubernetes Pod 驱逐详解

    原文链接:Kubernetes Pod 驱逐详解 在 Kubernetes 中,Pod 使用的资源最重要的是 […]...

  8. HOG特征基础(一)

    HOG特征简介 HOG 全称为 Histogram of Oriented Gradients ,即方向梯度的 […]...

展开目录

目录导航