char to string & string to char
-
Warum überhaupt char* und nicht immer string?
char test[] = "c:/"; std::string tstr = test; //Konvertierung char in string tstr += "arial.ttf"; //String anhängen
-
Braunstein schrieb:
Warum überhaupt char* und nicht immer string?
char test[] = "c:/"; std::string tstr = test; //Konvertierung char in string tstr += "arial.ttf"; //String anhängenVielleicht, weil es Funktionen gibt, die einfach ein char* benötigen (z.B. PathRemoveFileSpec).
-
Dann kannst du trotzdem std::string benutzen, denn ein String hat die Medthode c_str() die einen C-Style String zurück liefert. :p
-
... die einen konstanten C-Style String zurückliefert wäre richtig.
:p
-
Naja mitm String auf bsw. ein Zeichen => Zeichenkette umwandeln find ich nen bissel übertrieben

const char my_char('a'); char my_string[2] = { my_char, 0 };wäre da einfacher

-
Ich bin zwar noch C++-Anfänger, kann mir aber kaum vorstellen, dass Folgendes funktioniert:
std::string sTmp="C:\temp\test.txt"; PathRemoveFileSpec(sTmp.c_str()); //sTmp=="C:\temp\"Ich lasse mich aber gerne eines Besseren belehren. Ich bin zuhause und habe hier momentan keine Entwicklungsumgebung (neuer Rechner), sonst hätte ich es direkt ausprobiert.
Gruß Matze
-
Hmm nein geht auch nicht. Aber das hat nix mit std::string zu tun

const std::string temp("C:\\Temp\\Test.txt");du hast Escaped-Zeichen vergessen

const std::string temp("C:\\Temp\\Test.txt"); RemovePathSpecification(temp.c_str());.
-
Stimmt, es wird nicht funktionieren, weil die Funktion PathRemoveFileSpec einen in-out-Parameter (non-const) hat. Das wurde in diesem speziellen Fall nicht beachtet. Naja, ein Grund mehr von diesen C-APIs weg zu kommen.

-
Man muß natürlich sagen, das man so eine Funktion als C++ler eigentlich nicht bräuchte. Diese API-Funktion von Windows ist sicherlich eine große Hilfe für C-Programmierer. Aber für C++?
std::string str("C:\\temp\\test.txt"); str.resize( str.find_last_of('\\') ); // kein PathRemoveFileSpec nötig!
-
Artchi schrieb:
Man muß natürlich sagen, das man so eine Funktion als C++ler eigentlich nicht bräuchte. Diese API-Funktion von Windows ist sicherlich eine große Hilfe für C-Programmierer. Aber für C++?
std::string str("C:\\temp\\test.txt"); str.resize( str.find_last_of('\\') ); // kein PathRemoveFileSpec nötig!Gut zu wissen!
Zum Thema char*: Auch wenn es nicht mehr nötig sein mag. Ich denke, es kann nicht schaden, auch mal char-Arrays kennenzulernen. Vor allem, wenn man auch mal andere Sachen als Windows-Programme machen will/muss. Das habe ich gemerkt, als ich durch meine neue Arbeit gezwungen war, Microcontroller zu programmieren. Auf 2 KB Flash die std::string-Klasse unterzubringen wäre wohl sehr dreist...

Gruß Matze