如何在C / C ++中存储可变长度字符串

时间:2012-11-05 22:05:55

标签: c++ c

  

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

我试图将整个文本文件存储为字符串, 如何动态存储文本文件可能包含的任何数量的字符?

2 个答案:

答案 0 :(得分:6)

C ++标准库为动态大小的字符串提供std::string类型。它是std::basic_string<char>的typedef。 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
}

答案 1 :(得分:3)

除了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进行处理。