Fehler bei Konvertierung von int in CString mit CString:Format



  • Hallo,

    ich habe jetzt schon einige Stunden mit der Fehlersuche verbracht und komme einfach nicht dahinter. Google und Suchfunktion habe ich auch schon benutzt.
    Ich habe folgenden Code:

    int i = 100;
    	CString s_tmp;
    	s_tmp.Format("%d", i);
    

    Wenn ich versuche das so zu kompilieren bekomme ich immer folgenden Fehler:

    error C2664: 'void ATL::CStringT<BaseType,StringTraits>::Format(const wchar_t *,...)': Konvertierung des Parameters 1 von 'const char [3]' in 'const wchar_t *' nicht möglich
    1> with
    1> [
    1> BaseType=wchar_t,
    1> StringTraits=StrTraitMFC_DLL<wchar_t>
    1> ]
    1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.

    Sobald ich die Zeile mit s_tmp.Format auskommentiere, geht alles einwandfrei. Ich arbeite übrigens mit Visual Studio 2005 unter XP.
    Kann mir jemand sagen was ich falsch mache 😕



  • Das richtige Stichwort wäre "UNICODE" - und die Lösung s_tmp.Format(_T("%d"), i); .



  • Danke für die schnelle Antwort! Hat mir echt ne menge Zeit und Nerver erspart.
    Früher ging das aber ohne dem _T... Hab ich in den Einstellungen etwas geänder oder wieso brauch ich plötzlich das _T davor?
    Hab leider keine Ahnung was Unicode ist...



  • Ja, seit den neuesten Versionen arbeitet VS automatisch im Unicode-Modus (früher war Ansi-Modus voreingestellt).



  • kannst das aber auch ganz einfach ausstellen:
    Projekt -> Unterster Punkt [Name]-Eigenschaften -> Konfigurationseigenschaften -> Und als Zeichensatz wählste dann Multi-Byte

    Oder du gewöhnst dich halt an Unicode 😉


Anmelden zum Antworten