我正在尝试覆盖文件的行并取出“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"; }
);
}
答案 0 :(得分:4)
查看std::istream_iterator
的可用构造函数:
istream_iterator();
constexpr istream_iterator();
istream_iterator( istream_type& stream );
istream_iterator( const istream_iterator& other ) = default;
您尝试调用第三个构造函数,但是传递 rvalue ,而 lvalie 是预期的。