读取文本文件并转换成字符串的最短方法

7
可能重复问题:
什么是将文件读入std :: string的最佳方法? 我认为应该有一个像这样的问题,但我找不到。 下面是我的问题。
如何以最短的方式将整个文本文件读入字符串? 我只想使用最新的C ++标准和标准库功能。
我认为这个常见任务必须有一种简单的方法!

1
这个链接提供了一个不错的方法。将向量替换为字符串,它仍然可以工作。 - andre
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>());

1
将一个文件读入到一个std::string中,只需使用一条语句(是否符合一行取决于您的行长度……),代码如下:
std::string value{
    std::istreambuf_iterator<char>(
        std::ifstream("file.txt").rdbuf()),
    std::istreambuf_iterator<char>()};

不幸的是,这种方法通常没有使用额外的std::ostringstream快(虽然它实际上应该更快...)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接