Ich versuche Wörter von einer Datei in eine andere in cpp zu kopieren, hier ist mein Code:Kopieren Wörter aus einer Datei zur anderen in 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;
}
So kann ich einen Kompilierungsfehler erhalten:
expression must have class type
an der Linie, wo ich anrufen copy()
Wenn ich den Aufbau der Iteratoren folgendes ändern funktioniert es:
set<string> words{ istream_iterator<string>{ ifs }, istream_iterator<string>{} };
Ich dachte, die Wahl zwischen() und {} beim Initialisieren von Objekten in cpp ist nur eine Frage der Wahl, aber ich denke, ich liege falsch. Kann mir das jemand erklären?
Eigentlich 'set Wörter (istream_iterator {ifs}, istream_iterator {});' ist genug –
Slava