使用文件 - 替换一行

时间:2013-06-09 15:42:18

标签: c++ c++11 fstream

我正在尝试覆盖文件的行并取出“hello”这个词。由于某种原因,这是行不通的。这是文件:

out.txt

  

您好
  1
  2
  再见

以下是错误:

  

错误:没有匹配函数来调用'std::istream_iterator<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, char, std::char_traits<char>, int>::istream_iterator(std::fstream)'|

#include <fstream>
#include <string>
#include <algorithm>
#include <iterator>

int main()
{
    std::copy_if(
        std::istream_iterator<std::string>(std::fstream("out.txt")),
        std::istream_iterator<std::string>(),
        std::istream_iterator<std::string>(std::fstream("out.txt")),
        [] (std::string str) { return str != "hello"; }
    );
}

1 个答案:

答案 0 :(得分:4)

查看std::istream_iterator的可用构造函数:

istream_iterator();
constexpr istream_iterator();
istream_iterator( istream_type& stream );
istream_iterator( const istream_iterator& other ) = default;

您尝试调用第三个构造函数,但是传递 rvalue ,而 lvalie 是预期的。