【发布时间】:2010-10-06 04:37:02
【问题描述】:
我正在做一些非常简单的事情:将整个文本文件从磁盘读取到std::string。我当前的代码基本上是这样做的:
std::ifstream f(filename);
return std::string(std::istreambuf_iterator<char>(f), std::istreambuf_iterator<char>());
这不太可能对程序的性能产生任何影响,但我仍然很好奇这是否是一种缓慢的方式。
字符串的构造是否存在涉及大量重新分配的风险?在读取之前使用seekg()/tellg() 计算文件大小和reserve() 字符串中的那么多空间会更好(即更快)吗?
【问题讨论】: