前言
本地每一次测试都要从控制台输入测试数据,久而久之,博主就很烦了。
所以就想着要了解文件的输入输出流,把测试数据放在txt文档里,直接从文档里读取。
Iostream
从控制台获取信息并输出到控制台。不是本文的重点,附上例子带过就好。
提一句,一定要写上命名空间,否则不能直接用和!
Fstream
是可以从键盘获取输入信息;而则是可以从TXT等文件中获得信息的。必须要包含下面的两个头文件才行。
建立连接
使用方法建立链接,文件路径有两个办法。
也定义下列常量,来标明建立的链接是哪个模式的。
常量解释每次写入前寻位到流结尾以二进制模式打开为读打开为写打开在打开时舍弃流的内容打开后立即寻位到流结尾
后来,为了方便,也可以直接在生成类对象的时候直接传入文件名称和模式。为了方便理解,就直接附在后文的例子中了。
关闭链接
直接在对象上调用方法就可以了。
常规操作
读取文件
逐行读入
逐行读入,是需要引入头文件的。而且逐行读取的字符串,是没有换行符的!
逐个字符读入
忽略空格与回车。
逐个字符读入
包括空格与回车。
写入文件
先打开文件流,往流里面插入数据信息,然后关闭文件流。
应用
读取文件行数
重定向
之前是用和从控制台获得信息,重定向后可以用这两个对象操作文件写入写出!
按行号修改数据
一共有两种实现逻辑,分别是针对大文件和小文件的。
不论是修改还是删除,其实底层逻辑其实是一样的。
第一步是读取原来的文件,一般是for循环逐行读取。
第二步是在循环的过程中匹配行号或者关键字,当匹配成功就对内容进行修改或者舍弃
第三步,则是将读到内存的信息流写入文件,目标可以是新的文件,也可以是原来的文件。
按照缓存数据的方式可以分为两种,一种是针对大文件,短时间内无法完成全部操作,这时候我建议使用中间文件做缓存,即使出现意外也有之前留下的内容;而对于小文件,则是可以选择将文件内容全部存到内存里面来,然后再一次性覆盖回原来的文件。
其实删除某一行内容也是属于这种操作,整体文件流区别变化是不大的。
中间文件缓存
用变量缓存
文件转码
从GBK转为UTF8
因为以前的.cpp文件很多都是GBK编码的,现在为了统一称为UTF8编码的。在Linux系统上面有一个命令。
感谢
源码文件:
gitee:https://gitee.com/JunKuangKuang/KeenCPPTest-all/tree/main/STL/fstream
github.com:https://github.com/JunKuangKuang/KeenCPPTest-all/blob/main/STL/fstream
参考我以前存留的cpp文件,感谢以前努力的自己。
参考张成的博客
使用iconv批量转码
到此这篇ifstream和ofstream和fstream(c++ifstream和ofstream)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/cjjbc/82293.html