在C++中将文本文件粘贴到std :: string的数组/集合中的最佳方法是什么?

Mr.*_*Boy 1 c++ stl

C++中将整个文件读入std :: string的最佳方法什么?我想问一个类似的问题,除了我希望我的输出是一个包含文本文件中的行的数组/ STL容器.

C#/ .net有相当有用的File.ReadAllLines()实用程序函数,好的C++(STL)版本会是什么样子?

Naw*_*waz 6

在C++中,你可以这样做.

使用这种方法,您可以直接使用迭代器对beginend.无需使用std::vector<std::string>.注意line可以隐式转换为std::string.所以,你可以使用begin,并end与标准的算法.

例如,

  • 找到最长的线:

    auto cmp = [](line const &a, line const& b) { return a.size() < b.size(); };
    std::string longestLine = *std::max_element(begin, end, cmp);
    
    Run Code Online (Sandbox Code Playgroud)
  • 计算长度大于的行10:

    auto cmp = [](line const &a) { return a.size() > 10 ; };
    size_t count = std::count_if(begin, end, cmp);
    
    Run Code Online (Sandbox Code Playgroud)
  • 等等.通过这种方式,您可以直接使用begin和工作end.无需使用std::vector.节省内存.

希望有所帮助.

  • 但这打破了空白而不是换行. (2认同)
  • +1最后为缺少的"getline"流迭代器提供解决方案!(虽然这应该是`typedef basic_line <char>行;`,对吧?:-)) (2认同)