Casten?



  • Hi,

    kann man folgende Typen richtig casten?

    wchar_t -> signed char
    char -> wchar_t
    unsigned char -> char
    signed char -> unsigned char

    kann man da einfach mit static_cast<typ> dran gehen?



  • wchar_t -> signed char

    Kann man mit static_cast casten, ist aber problematisch. Besser wäre die Verwendung von narrow.

    #include <locale>
    #include <stdlib.h>
    int main()
    {
    wchar_t w = ...;
    signed char s = std::use_facet<std::ctype<wchar_t> >(std::locale::classic()).narrow(w, ' ');
    
    // oder
    wctomb((char*)&s, w);
    }
    

    char -> wchar_t

    Geht mit static_cast. Besser ist wohl widen:

    #include <locale>
    #include <stdlib.h>
    int main()
    {
    char s = ...;
    wchar_t w = std::use_facet<std::ctype<char> >(std::locale::classic()).widen(s);
    
    // oder
    mbtowc(&w, &s, 1);
    }
    

    unsigned char -> char

    Geht mit static_cast.

    unsigned char -> char

    Geht mit static_cast.


Anmelden zum Antworten