copy-befehl funktioniert nicht mehr
-
Hallo zusammen,
heute war es soweit, dass ich ein älteres Programm, welches in C++ mit Visual Studio (2003?) oder Visual Studio Express unter Windows XP geschrieben wurde, anpassen musste, da es unter Windows 7 nicht mehr laufen wollte. Mit einem einfachen neu Kompilieren war es leider nicht getan, da ein einziger Befehl Schwierigkeiten macht. Mittlerweile verwende ich C++ unter Visual Studio 2010 zum Programmieren. Der Befehl, welcher Schwierigkeiten macht, ist der Copy-Befehl im Quelltext-Ausschnitt unten. Dieser Copy-Befehl erzeugt fünf Fehlermeldungen, mit denen ich nichts anfangen kann, da das Programm sich früher ja problemlos kompilieren und ausführen lies. Kann mir jemand helfen den Aufruf wieder so zu gestallten, dass es funktioniert? Oder weiß jemand, ob sich an dem Befehl selbst etwas in den letzten Versionen geändert hat? bin für alle Hinweise dankbar.
Noch etwas zum Programm: Es liest zeilenweise eine Textdatei ein. In jeder Zeile sind verschiedene Zahlernwerte enthalten, die jeweils durch Leerzeichen getrennt sind. Die Werte in einer Zeile sollen jeweils am Leerzeichen getrennt und in den vector "tokens" geschrieben werden. Darauf erfolgt dann eine weitere Verarbeitung.Viele Grüße,
rodgerwilcoJtkPart *baueWuerfel(vector<string> vKoordsMitFarben, int pKantenlaenge, const char * strPfad, const char * strDateiname){ vector <string> tokens; //Gesplittete Werte einer Zeile for (unsigned int i = 0; i < vKoordsMitFarben.size(); i++){ //Teile Koordinaten und Farbwerte am Leerzeichen und schreibe die Werte in den Vector "tokens" istringstream iss(vKoordsMitFarben[i]); copy(istream_iterator<string>(iss),istream_iterator<string>(),back_inserter<vector<string> >(tokens)); } }
Hier noch die Fehlermeldungen:
error C2065: 'istream_iterator': nichtdeklarierter Bezeichner
error C2275: 'std::string': Ungültige Verwendung dieses Typs als Ausdruck
error C2065: 'istream_iterator': nichtdeklarierter Bezeichner
error C2275: 'std::string': Ungültige Verwendung dieses Typs als Ausdruck
error C2059: Syntaxfehler: ')'
-
scheint sich gerade erledigt zu haben. Die include-Anweisung war "weggeflogen"
#include <iterator> eingefügt und dann lief es wieder.
-
Der Witz von
back_inserter()
ist eigentlich, dass der Typ C fürstd::back_insert_iterator<C>
deduziert wird.typedef istream_iterator<string> Iter; copy(Iter(iss), Iter(), back_inserter(tokens));