CString: Ärger mit Typumwandlung



  • Hallo zusammen!

    Weiß jemand wie ich CString in const char* konvertieren kann? Ich habs mit (LPCTSTR)str versucht, erhalte aber nur Fehlermeldungen.

    LG, Sascha



  • CString ist bei Dir Unicode oder Ansi?

    Und ja, die Fehlermeldungen würden hier sicher weiterhelfen.



  • Und der Code würde auch weiterhelfen. Eventuell kommst du einfach nur mit Unicode und MBCS durcheinander und man kann das Problem anders lösen.

    Der Cast hilft jedenfalls nicht, wie du gemerkt hast. Das muss man schon umwandeln (z.B. CT2CA, glaube ich, schau lieber nochmal nach).



  • Ok, hier mal ein Auszug vom Code:

    BOOL CSettingsDlg::SaveData()
    {	
    	// Speichert die Dialogdaten in der Konfigurationsdatei
    	TiXmlDocument xmlDoc;
    	CString strPath;
    ...
    	// Pfad initialisieren
    	strPath = GetAppDirectory();
    	strPath += "Settings.xml";
    ...
    	return xmlDoc.SaveFile(strPath);
    ...
    

    TiXmlDocument::SaveFile() erwartet wie gesagt const char* als Parameter


  • Mod

    Wie es sri und _matze schon schrieb. Beschäftige Dich bitte mal mit dem Unterschied von MBCS und UNICODE.

    return xmlDoc.SaveFile(CT2A(strPath.GetString));
    


  • Oder alternativ auch

    return xmlDoc.SaveFile(CStringA(strPath).GetString());
    


  • Danke, mit den ATL-Makros (kannte ich nicht!) funktionierts 🙂


Log in to reply