将文本文件读取为字符串的最短方法

Shortest way to read Textfile to String

本文关键字:方法 字符串 文本 文件 读取      更新时间:2023-10-16

可能的重复项:
在 c++ 中将文件转换为 std::string 的最佳方法是什么?

我以为已经有这样的问题了,但我找不到。所以我的问题来了。

将整个文本文件读入字符串的最短方法是什么?我只想使用最新的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(它是否适合一行取决于你行的长度......)看起来像这样:

std::string value{
    std::istreambuf_iterator<char>(
        std::ifstream("file.txt").rdbuf()),
    std::istreambuf_iterator<char>()};

不幸的是,这种方法通常不如使用额外的std::ostringstream那么快(尽管它应该更快......