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

时间:2012-12-10 14:12:30

标签: c++ string file text c++11

  

可能重复:
  What is the best way to slurp a file into a std::string in c++?

我以为会有这样的问题,但我找不到一个。所以这就是我的问题。

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

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

2 个答案:

答案 0 :(得分:7)

可能这个:

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 :(得分:1)

使用一个语句将文件读入std::string(一行是否合适取决于行的长度......)如下所示:

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

遗憾的是,这种方法通常没有使用额外的std::ostringstream那么快(尽管它应该更快......)。