0

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

出.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"; }
    );
}
4

1 回答 1

4

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

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

您正在尝试调用第三个构造函数,但您传递了一个rvalue,而预期是一个lvlie

于 2013-06-09T15:56:31.250 回答