为了账号安全,请及时绑定邮箱和手机立即绑定

在C+中将整个文件读入STD:String的最佳方法是什么?

在C+中将整个文件读入STD:String的最佳方法是什么?

C++
繁星coding 2019-06-16 13:31:37
在C+中将整个文件读入STD:String的最佳方法是什么?如何将文件读入std::string,即一次阅读整个文件?调用方应指定文本或二进制模式。该解决方案应符合标准,便携和高效。它不应该不必要地复制字符串的数据,并且应该避免在读取字符串时重新分配内存。这样做的一种方法是统计文件大小,调整std::string和fread()进入std::string氏const_cast<char*>()爱德data()..这需要std::string它的数据是连续的,这是标准所不需要的,但是对于所有已知的实现似乎都是如此。更糟糕的是,如果文件是以文本模式读取的,则std::string其大小可能不等于文件的大小。一个完全正确、符合标准和可移植的解决方案可以使用std::ifstream氏rdbuf()变成std::ostringstream从那里变成一个std::string..但是,这可能会复制字符串数据和/或不必要地重新分配内存。所有相关的标准库实现是否都足够聪明,以避免所有不必要的开销?还有别的办法吗?我是否错过了一些已经提供了所需功能的隐藏的Boost函数?请给出你的建议如何实施。void slurp(std::string& data, bool is_binary)考虑到上述讨论。
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 967 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信