Konvertierung Strings/Zeichenzeiger
-
Ich fang mal ganz unbeholfen an (schon lange mit C++ nix zu tun gehabt):
in C++ gibts ja verschiedene Möglichkeiten Zeichen, Zeichenketten in Datentypen zu speichern und zu verweisen (Pointer). Zum bleistift als zeichenketten CString, TCHAR und als zeichenzeiger * char.
1. Gibts noch weitere?
2. Wie kann ich nun ein CString in ein *Char konvertieren?
Bsp. Ich habe hier folgenden Funktion:CString path="blabla";
..
fopen(path, "r"); // geht nicht da fopen als 1.Param const char * erwartet und irgendwie nicht cstring konvertieren kann (wieso?)3. Wie kann ich einen *Char in einem CString konvertieren/zuweisen?
-
1. CString ist eine Klasse aus der MFC (Visual Studio), TCHAR sind Einzelzeichen. Alternativ gibt es die std::string und jeder Compiler bietet vergleichbare Klassen an.
2. Mit CStrings sollte das so funktionieren (solange du nicht UNICODE programmierst), mit std::string nimmst du die Memberfunktion c_str() zur Umwandlung.
3. So, wie du das in deinem obigen Fragment gemacht hast (String-Literale sind auch char*).
-
ja aber genau das funtioniert ja nicht.
'fopen' : cannot convert parameter 1 from 'class CString' to 'const char *'
-
Da wir schon im Standardforum sind, sollten wir auch eine entsprechende Lösung bevorzugen.
std::string path = "blabla"; fopen(path.c_str(), "r");Ansonsten solltest du dir die Beiträge genau durchlesen, CStoll hat ja Unicode bereits angesprochen.
CString hat einen op LPCTSTR. Dieser evaluiert bei Unicode Kompilierung zu op const wchar_t*. Alles klar?
Noch ein Tipp, schau mal in die <tchar.h>. Da gibt es für alle möglichen Funktionen, welche mit Zeichen bzw. Zeichenketten arbeiten entsprechende TCHAR Versionen.