在cpp中将单词从一个文件复制到另一个文件

时间:2015-02-12 17:30:43

标签: c++ file

我试图在cpp中将文字从一个文件复制到另一个文件,这是我的代码:

int main()
{

    string from, to;

    cin >> from >> to;

    ifstream ifs(from);

    ofstream ofs(to);

    set<string> words(istream_iterator<string>(ifs), istream_iterator<string>());
    copy(words.begin(), words.end(), ostream_iterator<string>(ofs, "\n"));

    return !ifs.eof() || !ofs;
}

这样我收到编译错误:

expression must have class type

在我称之为copy()

的行

如果我将迭代器的结构更改为以下内容,则可以正常工作:

set<string> words{ istream_iterator<string>{ ifs }, istream_iterator<string>{} };

我想在cpp中初始化对象时选择()和{}只是一个选择问题,但我想我错了。 有人可以向我解释一下吗?

1 个答案:

答案 0 :(得分:2)

在第一个代码段中,set<string> words(istream_iterator<string>(ifs), istream_iterator<string>())行被解析为具有两个参数的函数words的声明:istream_iterator<string> ifs和类型为istream_iterator<string>的未命名参数并返回set<string>。这就是它给出编译错误的原因。第二个不能被解析为函数声明,因此它可以正常工作。