我以为已经有这样的问题了,但我找不到。所以这是我的问题。
将整个文本文件读入字符串的最短方法是什么?我只想使用最新的 C++ 标准和标准库的特性。
我认为必须有一个班轮来完成这项共同的任务!
大概是这样的:
std::ifstream fin("filename");
std::ostringstream oss;
oss << fin.rdbuf();
std::string file_contents = oss.str();
还有这个:
std::istreambuf_iterator<char> begin(fin), end;
std::string file_contents(begin, end);
有些人可能会建议这样做,但我更喜欢istreambuf_iterator<char>
只输入一次。
std::string file_contents(std::istreambuf_iterator<char>{fin}, std::istreambuf_iterator<char>());
要将文件读入std::string
using one 语句(它是否适合一行取决于行的长度......)看起来像这样:
std::string value{
std::istreambuf_iterator<char>(
std::ifstream("file.txt").rdbuf()),
std::istreambuf_iterator<char>()};
不幸的是,这种方法通常不如使用额外的方法快std::ostringstream
(尽管它确实应该更快......)。