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.


Anmelden zum Antworten