可能重复:
What is the best way to slurp a file into a std::string in c++?
我以为会有这样的问题,但我找不到一个。所以这就是我的问题。
将整个文本文件读入字符串的最短方法是什么?我只想使用最新的C ++标准和标准库的功能。
我认为这个共同的任务必须有一个班轮!
答案 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
那么快(尽管它应该更快......)。