简单的文本存取与读取在的程序中是比较常见的,一般为了读取的时候便于区分数据,我们常常会用空格或者空行来隔开数据字段,所以对于读取文件的操作我们肯定会有些具体的需求比如按照行读取或者按照词来读取(或者说是以空格来间隔数据字段)。我们归类的行间隔、空格间隔、符号间隔文本的读取,本文来接下来介绍的就是这些常规的读取操作。
文章原出处:
https://blog.csdn.net/haigear/article/details/136032962
下面的这段代码,直接使用了前面已经打开了的readIn对象,所以,我们直接使用了位置游标回零的函数seekg,要注意的是前面的clear函数,它清理掉了上一次操作的游标记录,如果不使用clear则无法将游标回零,意思是seekg会无效。
实现了上面的按照行读取,在这基础上实现按照行间隔来读取就容易了,只要增加一个队空行的识别即可,代码如下:
我们通过line的大小就直接过滤出了空行。
其实,按照词来读取,ifstream是有先天优势的,使用ifstream的流输出功能直接可以输出一个词。代码如下:
需要注意的是while里的if判断,如果没有这个判断,末尾的词会重复输出,具体可以查看或者测试eof函数的用法。
上面的代码有个明显的问题,它只能按照词的方式来读取,是不会区分行的。如果我们即要区分行又要按照词的方式来读取,如果办呢?
其实,要区分行又要按照词的方式来读取的需求是我们保存一些配置文件最常见的要求。比如这样的文件:
当然,我们这里测试的文件还没有这么复杂,没有说要按照某个符号来分割数据。
如果说需要即满足行分割又满足空格分割,那么我们可以这么来实现,先按照行来读取,后再对每行进行处理,代码如下:
如果我们需要使用空格意外的分割符,那直接将变量spstr修改为你想要的分隔符即可。
上面的配置文件,如果略去汉字部分,我们运行上面的程序可以得到以下的输出效果:
可以明显看到,这里的结果已经是对每个空行进行的分割线显示,每个空格所分割开的字段也已经单独一行显示了。
文章随时可能更新,请关注文章原出处:https://blog.csdn.net/haigear/article/details/136032962
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/11768.html