当前位置: 首页 > news >正文

C++I/O流——(3)文件输入/输出(第二节)

归纳编程学习的感悟,
记录奋斗路上的点滴,
希望能帮到一样刻苦的你!
如有不足欢迎指正!
共同学习交流!
🌎欢迎各位→点赞 👍+ 收藏⭐ + 留言​📝
含泪播种的人一定能含笑收获!

一起加油!

目录

文件的输入/输出操作:

1.ASCII 文件的读写操作:

2.二进制文件的读写操作: 

3.随机文件操作:


文件的输入/输出操作:

1.ASCII 文件的读写操作:

        ASCII文件中的每一个字节均以 ASCII码形式存放数据,即一个字节存放一个字符。可以用以下两种方法对 ASCIl文件进行读写操作:
(1)用流插入运算符“<<”和流提取运算符“>>”
(2)用put、get、getline 等成员函数进行字符输入/输出

2.二进制文件的读写操作: 

        对二进制文件的操作也需要先打开文件,用完后关闭文件,在打开时要用 ios::binary 指定为以二进制形式传送和存储。二进制文件除了可以作为输入文件或输出文件,还可以是既输入又输出的文件,这是与 ASCll文件的不同之处。

对二进制文件的读写主要用 istream 类的成员函数 read 和 write 来实现。其格式如下:

istream& read(char *buffer, int len);

ostream& write(const char * buffer,int len); 

 其中,指针 buffer 指向内存中一段存储空间。len 是读写的字节数目。

3.随机文件操作:

        C++语言的文件读写一般是顺序进行的,即逐个字节进行读写。但有时也可以采用随机读取方式,在随机读取方式中,除了要打开、关闭文件和读写数据之外,还要使用读、写指针,随机访问文件中的任意位置上的数据,还需要修改文件中的内容。
        在磁盘文件中有一个文件读写位置标记来指明当前应进行读写的位置。在对文件进行读操作时,每从文件中读人一个字节到内存,该文件读写位置就向后移动一个字节。在对文件进行写操作时,每向文件输出一个字节,位置标记也向后移动一个字节。对二进制文件,允许对位置标记进行控制。文件流提供了一些有关文件位置标记的成员函数。

gcount()                                                得到最后一次输入所读入的字节数
tellg()                                                     得到输入文件位置标记的当前位置
tellp()                                                     得到输出文件位置标记的当前位置
seekg(<文件中的位置>)                        将输入文件位置标记移到指定的位置
seekg(<位移量>,<参照位置>)             以参照位置为基础移动若干字节 

seekp(<文件中的位置>)                        将输出文件位置标记移到指定的位置
seekp(<位移量>,<参照位置>)            以参照位置为基础移动若干字节

        在这些函数中以g结尾的,表示 get,即作为输入的标识;以p结尾的,表示put,即作为输出的标识。如果是既可输入又可输出的文件,则说明该文件可以被任意使用。
        在函数参数中,<文件中的位置>是相对于文件头的流中位置,为 long 型字节数,<位移量>也是long 型字节数。<参照位置>为枚举常量。

        以上就是我对C++I/O流——(3)文件输入/输出(第二节)的理解,希望本篇文章对你有所帮助,也希望可以支持支持博主,后续博主也会定期更新学习记录,记录学习过程中的点点滴滴。如果有不懂和发现问题的小伙伴,请在评论区说出来哦,同时我还会继续更新对C++I/O流的理解,请持续关注我哦!!!

http://www.lryc.cn/news/281272.html

相关文章:

  • 内网穿透[让你在家里也能榨干学校的服务器]Yep!
  • 构建基于RHEL9系列(CentOS9,AlmaLinux9,RockyLinux9等)的支持63个常见模块的PHP8.1.20的RPM包
  • 你知道什么是Java中的类型强转吗?
  • 【2023】ArrayList和LinkedList详解介绍对比
  • 【软件工程】基于领域建模的产品与技术方案设计(领域驱动设计DDD)
  • 跨境电商账号频繁?你的IP可能“不干净”了
  • Docker数据卷与拦截与目录拦截
  • Python 元类 metaclass 详解
  • HCIA基础知识
  • 翻译: Streamlit从入门到精通 部署一个机器学习应用程序 四
  • AI时代Python量化交易实战:ChatGPT引领新时代
  • 国科大软件安全原理期末复习笔记
  • 人工智能软件测试2024年主要趋势
  • 【JAVA】Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式
  • 常见的反爬虫风控 | 验证码风控
  • ClickHouse(21)ClickHouse集成Kafka表引擎详细解析
  • JSP-概念
  • sqlite插入语句id自增列问题
  • C#,字符串匹配(模式搜索)AC(Aho Corasick)算法的源代码
  • 【网络取证篇】Windows终端无法使用ping命令解决方法
  • electron+vue网页直接播放RTSP视频流?
  • 【Delphi 基础知识 19】Assigned的用法
  • 多线程在编程中的重要性有什么?并以LabVIEW为例进行说明
  • K8S---kubectl top
  • Linux部署前后端项目
  • 一文搞懂系列——Linux C线程池技术
  • stable diffusion代码学习笔记
  • 腾讯云服务器怎么买?两种购买方式更省钱
  • 基于SpringBoot自定义控制是否需要开启定时功能
  • “确定要在不复制其属性的情况下复制此文件?”解决方案(将U盘格式由FAT格式转换为NTFS格式)