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-ByteOder du gewöhnst dich halt an Unicode
