7

可能重复:
在 C++ 中将文件啜饮到 std::string 中的最佳方法是什么?

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

将整个文本文件读入字符串的最短方法是什么?我只想使用最新的 C++ 标准和标准库的特性。

我认为必须有一个班轮来完成这项共同的任务!

4

2 回答 2

8

大概是这样的:

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>());
于 2012-12-10T14:15:14.200 回答
1

要将文件读入std::stringusing one 语句(它是否适合一行取决于行的长度......)看起来像这样:

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

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

于 2012-12-10T15:40:19.987 回答