当前位置:  开发笔记 > 编程语言 > 正文

使用fstream读取包含空格和换行符在内的每个字符

如何解决《使用fstream读取包含空格和换行符在内的每个字符》经验,为你挑选了3个好方法。

我想用来fstream读取txt文件.

我正在使用inFile >> characterToConvert,但问题是这省略了任何空格和换行符.

我正在编写加密程序,所以我需要包含空格和换行符.

什么是实现这一目标的正确方法?



1> Jason Etheri..:

可能最好的方法是将整个文件的内容读入一个字符串,这可以使用ifstream的rdbuf()方法非常容易地完成:

std::ifstream in("myfile");

std::stringstream buffer;
buffer << in.rdbuf();

std::string contents(buffer.str());

然后,您可以使用常规字符串操作,因为您已从文件中获取所有内容.

虽然Tomek要求读取文本文件,但是同样的方法将用于读取二进制数据,尽管在创建输入文件流时需要提供std :: ios :: binary标志.



2> luke..:

对于加密,最好以二进制模式打开文件.使用类似的东西将文件的字节放入向量:

std::ifstream ifs("foobar.txt", std::ios::binary);

ifs.seekg(0, std::ios::end);
std::ifstream::pos_type filesize = ifs.tellg();
ifs.seekg(0, std::ios::beg);

std::vector bytes(filesize);

ifs.read(&bytes[0], filesize);

编辑:根据评论修复了一个微妙的错误.



3> Adam Holmber..:

我没有测试过这个,但我相信你需要清除"skip whitespace"标志:

inFile.unsetf(ios_base::skipws);

我对C++流使用以下参考: IOstream Library

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有