首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在C++中将整个文件读入std::string?

如何在C++中将整个文件读入std::string?
EN

Stack Overflow用户
提问于 2008-09-23 00:48:02
回答 20查看 100K关注 0票数 217

如何将文件读入std::string,即一次性读取整个文件?

文本或二进制模式应由调用方指定。该解决方案应该是符合标准的、可移植的和高效的。它不应该不必要地复制字符串的数据,并且应该避免在读取字符串时重新分配内存。

要做到这一点,一种方法是统计文件大小,将std::stringfread()调整为std::stringconst_cast<char*>()'ed data()。这要求std::string的数据是连续的,这不是标准所要求的,但似乎所有已知的实现都是这样的。更糟糕的是,如果文件是以文本模式读取的,则std::string的大小可能不等于文件的大小。

使用std::ifstreamrdbuf()可以构建一个完全正确的、符合标准的和可移植的解决方案到std::ostringstreamstd::string中。然而,这可能会复制字符串数据和/或不必要的内存重新分配。

  • 是否所有相关的标准库实现都足够智能,可以避免所有不必要的开销?
  • 是否有其他方法可以做到这一点?
  • 我是否错过了一些已提供所需functionality?

的隐藏Boost函数

代码语言:javascript
复制
void slurp(std::string& data, bool is_binary)
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/116038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档