Ostream in Variable umlenken?
-
Hi,
Für ein Projekt muss ich 3D Voronoi Zerlegungen während einer Simulation berechnen. Da ich die Voronoi-Berechnungen nicht selber implementieren will, nutze ich hierzu voro++.
Leider bieten die Klassen nur output-Formate auf Dateien an, oder auf ostream. Da ich die Berechnungen aber während der Simulation noch brauche, muss ich die irgendwie in eine Variable bekommen.
Die Signatur der Funktion sieht so aus:
print_all_custom (const char *format, ostream &os)Nun wollte ich mittels <sstream> und stringstream die Ausgabe in einen String umwandeln, aber irgendwie funktioniert das nicht:
... char[250] s = {'\0'}; //Ist nicht die beste Lösung, aber ist auch nur schnell zum Testen.. die Ausgabe wird aber nicht mehr als 250Zeichen haben stringstream ss (stringstream :: out); ... con.print_all_custom("%i %C",ss); for(int i = 0; i < 8;++i) { //Hier erwarte ich eig. 8 verschiedene Strings ss >> s; printf("Ausgabe: %s",ss); } ...
-
Der Eingabe-Operator des Stringstreams liest genauso wie cin bis zum nächsten Leerzeichen. Wenn du alle Daten haben willst, die der Stream bekommen hat, kannst du ihn aber auch direkt danach fragen:
stringstream sout; con.print_all_custom("%i %C",sout); string data = sout.str();PS: Wenn du den Stream mit Modus ios::out anlegst, machen Eingabe-Operationen ohnehin wenig Seinn

-
Hi Pille456,
versuche mal:
string s; // erfordert #include <string> for( int i = 0; i < 8 && ss >> s; ++i ) cout << "Ausgabe: " << s << endl;und in Zeile 3 reicht, wie CStoll schon anmerkte
stringstream ss;Gruß
Werner