Probleme mit CString



  • Hallo,
    es ist doch schon ein Weilchen her, dass ich mit Visual Studio und MFC zu tun gehabt habe. Deshalb habe ich eine Frage im Bezug auf CStrings.

    CString inputString = _T("abc");
    string temp = (char *)(LPCTSTR)inputString;
    

    dann steht in temp nur "a";

    String inputString = _T("abc");
    string temp = (LPCTSTR)inputString;
    

    Fehler

    Die Umwandlung von CString zu String funktioniert am einfachsten mit c_str(), oder?

    Bei mir steht gerade einer auf dem Schlauch... mein Dank gilt dem jenigen der ihn runterschubs 🙂

    Danke



  • Hallo DonDom,

    Du kompilierst mit Unicode, dann ist:
    - Cstring ein Unicode string.
    - std::string ein MCBS string.

    am einfachsten machst Du ein typedef:

    typedef std::basic_string<TCHAR> Tstring;

    und benutzt dann nur noch Tstring anstelle von std::string.

    Herzliche Grüsse
    Walter



  • Ok Danke soweit mal.

    typedef std::basic_string<TCHAR> Tstring; 
    CString inputString = _T("abc");
    Tstring temp = (LPCTSTR)inputString;
    

    funktioniert.

    doch leider habe ich scheinbar mein zweites problem noch nicht ganz verstanden.

    std::string str = "Hello world";
    std::tr1::regex rx("ello");
    regex_match(str.begin(), str.end(), rx)
    

    Wobei ich mit den Datentypen nicht zurecht komme.
    Alle Attributwerte sind in CStrings gespeicher.

    Danke für die Hilfe. Meine Funktionen funktionieren, allerdings nicht mi den CStrings. 😡



  • regex rx("a[a-z]c");
    	string temp = "abc";
    
    	bool a = false; 
    	a = regex_match(temp.begin(), temp.end(), rx);
    

    das funktioniert. Wie in dem Bsp. das ich ausm Netz habe, aber leider bekomme ich es nicht hin das die Werte aus CStrings kommen.


  • Mod

    Weicher hat Dir doch schon die Antowrt gegeben. Du hast vermutlich ein Unicode Projekt, damit ist CSring eben Unicode...



  • manchmal reicht auch nochmal ein deutlicher Hinweis darauf 🙂
    Danke


Anmelden zum Antworten