Unicode in Textbox schreiben.
-
Hallo Forum,
ich habe noch nie ein Projekt mit Visual Studio 6 geschrieben. Ich habe aber C++ Erfahrung. Eine Funktion in einer DLL erstellt einen Report und gibt ihn mir als wstring zurück. Ich möchte nun eine einfache GUI bauen die diesen String darstellt. Ich gehe nach diesem Tutorial vor:
http://www.bakterienkultur.de/forum/viewtopic.php?=&p=1412Hier wird der Textbox ein cstring als Variable zugeordnet. Anscheinend ist das etwas anderes als ein wstring. Meine Fragen:
1. Ist meine Oberfläche nun nicht in China lauffähig? (cstring scheint irgendwas MFC spezifisches zu sein; und kein Unicode.)
2. Kann ich irgendwie der Editbox ein wstring zuweisen?
3. Und wenn nicht, gibt es keine einfachere Konvertierung zwischen wstring und cstring wie hier beschrieben?
http://www.c-plusplus.net/forum/viewtopic-var-t-is-161855.html
Hier muß ich ja erst von wstring nach wchar_t, dann mit Funktion ConvertUnicode2CP() nach std::string und dann nach cstring.
http://www.c-plusplus.net/forum/viewtopic-var-t-is-175273.htmlVielen Dank
-
CString ist eine MFC eigene string klasse
der name CString ist aber nur ein typedef {oder wars noch einfacher ein define?}
von CStringT
welched char und wchar_t speichern kann - ich denk mit
CString strTmp(std::wstring& OldStr);
kommst du schon sehr weit
-
std::wstring wsReport; wsReport = oDLLResult.GetReport(); // Hier bekomme ich den wstring. CString strTmp(wsReport); // Hier kommt der Fehler. m_sReport = strTmp; // m_sReport ist der Sting der zur Textbox gehört. UpdateData(false);Der Fehler:
error C2664: '__thiscall CString::CString(const class CString &)' : cannot convert parameter 1 from 'class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> >' to 'const class CString &'
Reason: cannot convert from 'class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> >' to 'const class CString'
No constructor could take the source type, or constructor overload resolution was ambiguous
-
Dies ist die Lösung:
m_sReport = wsReport.c_str();
-
wollte ich gerade sagen - einfach .c_str() - das loest viele solcher probleme