ostringstream in char
-
hi probiers mal so:
ostringstream s; sstr << "Hallo"; char *c = s.c_str();
oder sonst schau mal da:
http://cplus.kompf.de/artikel/stream4.htmlcu surf.
-
ich meinte so:
s << "Hallo";cu
-
Ne irgendwie klappt das so noch nicht.
Sonst noch Möglichkeiten?Danke
MISCHU
-
MISCHU schrieb:
Ne irgendwie klappt das so noch nicht.
Sonst noch Möglichkeiten?Ja: Fehlermeldung posten.
btw: ersetze char* mal durch char const*
-
und ersetze
char const *c = s.c_str();
durch
char const *c = s.str().c_str();
-
Ne er wehrt sich immernoch...
beim compilieren gibt es zwar mit der const-Variante keine Fehler mehr aber die Ausgabe stimmt immernoch nicht.
Sieht so aus: ÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝp
Hoffe,d ass ich die entscheidenden Codestücke zusammengesammelt habe und ihr mir helfen könnt.
char const *korrektbp; char produktionsprotokoll[19000]; lstrcpy (produktionsprotokoll,"PRODUKTIONSREPORT.txt\n"); strcat (produktionsprotokoll, korrektbp); strcat (produktionsprotokoll, " %\n"); std::ostringstream stream; stream.precision(2); stream << std::fixed << korrekte_produkte_proz; korrektbp = stream.str().c_str();
Danke euch
MISCHU
-
Hi!
Habe eben folgendes Programm versucht auszuführen. Kompilieren und Linken ging einwandtfrei. Allerdings steht in mychar nichts drin:
#include <iostream> #include <sstream> #include <string> #include <cstring> int main() { using namespace std; ostringstream out; out << "Hallo\0"; char const *mychar = out.str().c_str(); cout << strlen(mychar) << std::endl; cin.clear(); cin.sync(); cin.get(); return 0; }
Wenn ich strlen(mychar) durch out.str().c_str() ersetzt habe, kam etwas raus. So wie es jetzt ist, ist mychar immer leer.
Habe Kompiliert mit dem VC++7.Code-Hacker
-
Hallo!
Folgendes Funktioniert:
#include <iostream> #include <sstream> #include <string> #include <cstring> int main() { using namespace std; ostringstream out; out << "Hallo"; std::string mstring = out.str(); const char *mychar = mstring.c_str(); cout << mychar << std::endl; cin.clear(); cin.sync(); cin.get(); return 0; }
Ich weise es erst einem std::string zu und dann mystring und dann funktioniert es auch.
Code-Hacker
-
D'Oh!
out.str() gibt doch ein temporäres Objekt zurück. Nach der Zeile ist es nicht mehr gültig. Dein Zeiger zeigt also ins Nichts.
-
Hi!
Stimmt, per Speicheranforderung musste es ja funktionieren. Außerdem hat man einen char* und keinen const char* mehr.
Allerdings muss der Speicher den man frei gibt doch ein Array sein, alsodelete[] mychar;
?
Code-Hacker
-
also direkt nach der konvertierung geht es ... als golable Variable klappt's allerdings noch nicht.
Hatte es so: const char *korrektbp; als globale Variable deklariert.
Dann im Programm so gesetzt: korrektbp = mstring.c_str();Dann wird wieder so'n misst angezeigt: YYYYYYYYYYYYYYYYYYYYYYYp
wenn ichs im Programm so bennen: *korrektbp = mstring.c_str();ist das Teil leer.
Woran liegts ?MISCHU