【发布时间】:2012-10-25 19:46:00
【问题描述】:
可能重复:
What is the best way to slurp a file into a std::string in c++?
我试图将整个文本文件存储为字符串, 如何动态存储文本文件可能包含的任意数量的字符?
【问题讨论】:
-
您的文件大小如何? 20GB?
-
@KingsIndian,只有几千字节
标签: c++
可能重复:
What is the best way to slurp a file into a std::string in c++?
我试图将整个文本文件存储为字符串, 如何动态存储文本文件可能包含的任意数量的字符?
【问题讨论】:
标签: c++
C++ 标准库为动态大小的字符串提供std::string 类型。它是std::basic_string<char> 的类型定义。 cppreference.com 上有a useful reference。
要从文件中读取行到std::string,请查看std::getline。您可以使用它从文件中获取一行,如下所示:
std::string str;
std::getline(file_stream, str);
请务必检查流(由std::getline 返回)以查看是否一切正常。这通常在循环中完成:
while (std::getline(file_stream, str)) {
// Use str
}
【讨论】:
除了sftrabbit的回答:
请注意,您可以通过以下方式一次性将整个文件读入字符串:
std::ifstream input_ifstr(filename.c_str());
std::string str(
(std::istreambuf_iterator<char>(input_ifstr)),
std::istreambuf_iterator<char>());
input_ifstr.close();
如果你愿意,你可以从中构造一个字符串流,然后用 getline 进行处理。
【讨论】: