Konvertierungen zwischen Unicode und Ascii (Ansi?) Strings



  • Hallo,

    da ich in meinem aktuellen Projekt mit Unicode arbeiten möchte, verwende ich als String einheitlich basic_string<wchar_t>. Einige Funktionen erwarten als Parameter einen const char*. Die Frage: Wie kann ich nun einen solchen basic_string<wchar_t> nach const char* konvertieren? Mit basic_string<wchar_t>::c_str() geht es nicht, da ich dann ja ein wchar_t* anstatt einem char* zurückbekomme. Und in der FAQ steht auch nur, wie man char* nach wchar_t* konvertiert und nicht andersherum.

    Vielen Dank für Antworten 🙂



  • Und in der FAQ steht auch nur, wie man char* nach wchar_t* konvertiert und nicht andersherum.

    Das andersherum lässt sich aber doch trivial aus dem FAQ-Beitrah herleiten:

    VC 6:

    wstring wide(L"Hallo");
    char Narrow[6]; 
    char defChar = ' ';
    _USE(cout.getloc(), ctype<wchar_t> ).narrow(wide.c_str(), wide.c_str()+6, defChar, Narrow);
    

    Andere:

    wstring wide(L"Hallo");
    char Narrow[6]; 
    char defChar = ' ';
    use_facet<ctype<wchar_t> > (cout.getloc()).narrow(wide.c_str(), wide.c_str()+6, defChar, Narrow);
    

    Alternativ hilft:
    wcstombs

    wstring wide(L"Hallo");
    char narrow[6];
    narrow[5] = '\0';
    wcstombs(narrow, wide.c_str(), wide.size());
    

Anmelden zum Antworten