【发布时间】:2013-06-09 15:42:17
【问题描述】:
我正在尝试覆盖文件的行并取出单词“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"; }
);
}
【问题讨论】:
-
在您仍在尝试读取文件时覆盖文件可能是个坏主意。当您实际上需要一些 output 迭代器时,您还可以传入
std::istream_iterator<>作为第三个参数。