Seite 1 von 3

[C++] std::String in const char konvertieren

Verfasst: 13.02.2009 17:39
von X0r
(siehe titel)

Verfasst: 13.02.2009 17:48
von milan1612
Du meinst zu const char* oder? probier mal str.c_str()...

Verfasst: 13.02.2009 18:04
von X0r
>Du meinst zu const char* oder? probier mal str.c_str()...

Hatte ich ja, hat aber nicht funktioniert. Deswegen habe ich auch nach ner anderen Lösung gesucht. Jetzt gehts plötzlich...
:roll:
naja, ich sollte dann mal besser schlafen gehen. :mrgreen:

Verfasst: 13.02.2009 18:06
von milan1612
X0r hat geschrieben:>Du meinst zu const char* oder? probier mal str.c_str()...

Hatte ich ja, hat aber nicht funktioniert. Jetzt gehts plötzlich...
:roll:
naja, ich sollte dann mal besser schlafen gehen. :mrgreen:
Hehe, die Erfahrung hatte ich mit C++ auch schon oft, am Tag darauf funktionierte
es plötzlich und ich hätte schwören können im Grunde nichts geändert zu haben... :lol:

Verfasst: 13.02.2009 19:07
von X0r
So, nächstes Problem. Ich lese aus einer Datei einen Integer-Wert aus. Den muss ich einer Funktion nun als const char übergeben. Normalerweise kann man ja die itoa Funktion benutzen, wäre aber kein gutes C++, oder?

Verfasst: 13.02.2009 19:12
von milan1612
X0r hat geschrieben:So, nächstes Problem. Ich lese aus einer Datei einen Integer-Wert aus. Den muss ich einer Funktion nun als const char übergeben. Normalerweise kann man ja die itoa Funktion benutzen, wäre aber kein gutes C++, oder?
Nein, dafür nimmt man stringstreams:

Code: Alles auswählen

#include <sstream>
//...
int zahl = 42;
stringstream ss;
ss << zahl;
string zahlstr = ss.str();
deine_funktion(zahlstr.c_str());
Das ist jetzt so aus dem Gedächtnis rausgeschrieben, habs nicht getestet...

EDIT: Mann kann auch den lexical cast aus der Boost Library dafür nehmen,
halte ich in diesem Fall allerdings für sinnlos weil der dafür auch nur intern
nen stringstream nutzt.

Verfasst: 13.02.2009 19:19
von X0r
Funktioniert zwar, aber ist irgendwie nicht so schön, wenn man "temp"-objekte erstellen muss. Gibts ne andere Möglichkeit?

Verfasst: 13.02.2009 19:23
von milan1612
X0r hat geschrieben:Funktioniert zwar, aber ist irgendwie nicht so schön, wenn man "temp"-objekte erstellen muss. Gibts ne andere Möglichkeit?
Naja, den angesprochenen lexical cast aus Boost, oder du nimmst halt itoa,
das benützen viele noch. Stringstreams sind halt der empfohlene Weg für sowas...

Oder schreib dir selber ne Funktion :wink:

EDIT: Ach sprintf gibts auch noch, ist aber als unsicher verschrien (und außerdem C und nicht C++)

Verfasst: 13.02.2009 19:39
von X0r
Hm,
irgendwie kommt mir C++ gerade wie Chinesisch vor. Lange nix mehr gemacht, alles verlernt...

Es geht darum, dass ich eine Datei lesen will, in der sowohl Strings, als auch Integers gespeichert sind. Kann man ja mit der ifstream klasse auslesen, aber wie funktioniert das, wenn der inhalt gemischt ist(halt mal string, mal integer, mal float etc.)?

Code: Alles auswählen

			myfile->getline(test,sizeof(test));
			myfile->read(reinterpret_cast<char*>(&version),sizeof(int));
geht irgendwie nicht.

Verfasst: 13.02.2009 20:22
von Fluid Byte
[ot]
Welche IDE verwendest du eigentlich? Bin gerade dabei mir die Visual C++ Express Editon zu installieren. Was kostenlose IDE's angeht soll es angeblich die beste sein.

Hier zu finden:
http://www.microsoft.com/germany/Expres ... press.aspx

Ansonsten vielleicht noch Code::Blocks. Aber taugt die was?
[/ot]