wstring



  • Hallo,

    kann mir jemand erklären warum ich bei diesem Programm:

    int main(int argc, char** argv)
    {
        std::wstring wstr(L"A€A");
        std::wcout << "Content       : " << wstr << std::endl;
    
        std::string str("A€A");
        std::cout << "Content      : " << str << std::endl;
    }
    

    folgenden Output bekomme (Linux shell):
    AA
    A€A

    Eigentlich habe ich erwartet, dass wsting mit wstrings umgehen kann :).

    Gruß,
    hanebuechen



  • ich vermute weil das programm auf multibyte compiliert wurde:

    int main(int argc, char** argv)
    


  • multibyte?



  • Es wird wohl eher an einer Implementierung von std::codecvt die einfach nicht alles umwandelt, wie man es sich selber wünscht. Meistens muß man sagen, was man am Output haben will. Die meisten codecvt-Implementierungen schmeissen alles weg, was größer 255 ist. Außerdem, wie hast du das Euro-Zeichen eingegeben? Man sollte alles >128 über den \uXXXX eingeben.


Anmelden zum Antworten