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=1412

    Hier 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.html

    Vielen 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


Anmelden zum Antworten