String mit integer verbinden
-
Hallo!
Ich bin gerade dabei c++ zu lernen (hab vorher etwas Java programmiert) und habe folgendes Programm geschrieben:
for(int i=0;i<100;i++) { ofstream Datei; string dn=(string)("C:/workspace/dat"+i+".txt"); Datei.open(dn, ios::trunc); Datei<<a<<endl; Datei.close(); }Dabei erhalte ich in Zeile 4 eine Fehlermeldung:
invalid operands of types `const char*' and `const char[5]' to binary `operator+'Die Dateien sollen durchnummeriert werden!
Wieso funktioniert das nicht? (so kenn ich es von Java)
Wie soll ich es dann machen?Außerdem funktioniert auch Zeile 5 nicht. Fehlermeldung:
no matching function for call to `std::basic_ofstream<char, std::char_traits<char> >::open(std::string&, const std::_Ios_Openmode&)'Ich bin im Moment völlig ratlos.

Helft mir bitte!!!
-
Hi,
1. ostringstream (Auch zu finden unter FAQ "string nach int und zurück" (o.ä.))
2. open braucht keinen std::string, sondern einen "char const*", dafür gibt's c_str()
3. Java-casts funktionieren nicht in C++
(also "(string)")
4. Beim "Abräumen" eines stream-Objektes wird automatisch ge-close-ed; hier kannst Du es Dir also sparenfor(int i=0;i<100;i++) { ofstream Datei; ostringstream ost; ost << "C:/workspace/dat" << i << ".txt"; Datei.open(ost.str().c_str(), ios::trunc); Datei<<a<<endl; }Gruß,
Simon2.
-
Danke für die schnelle Antwort
!
-
Michael1234 schrieb:
Außerdem funktioniert auch Zeile 5 nicht. Fehlermeldung:
no matching function for call to `std::basic_ofstream<char, std::char_traits<char> >::open(std::string&, const std::_Ios_Openmode&)'ifstream::open() gibt es (leider) nicht für std::string's, sondern nur für char* - das heißt, du mußt dir mit c_str() die char*-Daten des Strings holen (auch in Simon's Version, die er schon korrigiert hat ;)).
-
Jetzt habe ich schon wieder eine Fehlermeldung:
aggregate `std::ostringstream ost' has incomplete type and cannot be definedWas ist jetzt falsch? (ich habe obiges Beispiel abgeschrieben)
Danke, für eure schnelle hilfe!
-
Hast du den richtigen Header (in dem Fall <sstream>) eingebunden?
-
Jetzt funktioniert's!

-
CStoll schrieb:
Hast du den richtigen Header (in dem Fall <sstream>) eingebunden?
Ah - sorry Michael, hatte ich vergessen !
Schön, dass es jetzt klappt !
Gruß,
Simon2.