c++ - 是否有可以逐行迭代文件的 C++ 迭代器?

标签 c++ file iterator newline line

我想要一个 istream_iterator 风格的迭代器,它将文件的每一行作为字符串而不是每个单词返回。这可能吗?

最佳答案

编辑:这个技巧已经被别人发布了in a previous thread .

轻松拥有std::istream_iterator做你想做的事:

namespace detail 
{
    class Line : std::string 
    { 
        friend std::istream & operator>>(std::istream & is, Line & line)
        {   
            return std::getline(is, line);
        }
    };
}

template<class OutIt>
void read_lines(std::istream& is, OutIt dest)
{
    typedef std::istream_iterator<detail::Line> InIt;
    std::copy(InIt(is), InIt(), dest);
}

int main()
{
    std::vector<std::string> v;
    read_lines(std::cin, std::back_inserter(v));

    return 0;
}

关于c++ - 是否有可以逐行迭代文件的 C++ 迭代器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2291802/

相关文章:

c++ - 有没有办法将 "inherit"设为 int 等基类型?

C++ - 有没有办法将标识符作为字符串获取?

c++ - 如何将一个成员函数传递给另一个成员函数?

c++ - 处理相似代码的优雅方式

javascript - Jquery 文件上传在 IE 中不起作用

java - 映射字符串列表?

ruby - 目录内容是否已更改?

php - Laravel 支持 return Redirect::back()->withFile() 吗?

c++ - 实现迭代器类的问题

c++ - 迭代器和模板