wchar_t aus einem string machen



  • Hallo Leute,
    ich benutzte mingw unter windows (über msys).

    Mein Problem ist die Konvertierung von eine wchar_t in einen string (aus string.h)

    Am Ende sollte dann soetwas herauskommen:

    #include <string.h>
    ...
       wchar_t wc1;
       string s1;
       tmp= ?;
    ...
    


  • Was ist string für ein Typ? In <string.h> gibt es diesen Typ nicht.

    Du musst schon die Deklaration angeben; du könntest genausogut fragen wie du einen int in einen foo kriegst:

    int i;
    foo f = ???
    


  • "wchar_t" ist das gegenstück zu char für breite Zeichencodes. (also Unicode --- char ist ANSI (wenn ich das jetzt richtig aus meinem "Petzold" entnehme))
    Ich glaube, dass es nichts mit "Standard C" zutun hat, sondern etwas betriebssystemspezifisches ist. (Will mich da jetzt nicht festlegen)
    (Unicode gibt es erst seit WinNT --- also auch für 2k und XP)

    Wenn man seinen (Windows-)Code kompatibel schreiben will, gibt es (zumindest im MSVC) <tchar.h>:

    tchar.h schrieb:

    #ifdef _UNICODE
    typedef wchar_t TCHAR;
    #else
    typedef char TCHAR;
    #endif
    

    soweit bis hierhin, the flyingCoder.



  • wchar_t ist ein Typ für breite Zeichen, kein Typedef; jedenfalls in C++, ob das in C auch so ist weiß ich grad nicht. Aber es ist Standard und ausnahmsweise keine Windows-Eigenheit.
    Die Windows NT-Reihe basiert intern auf Unicode, die 9x-Reihe auf ANSI (XP zählt zu NT). Zum Glück fand die 9x-Reihe mit ME ein (unrühmliches) Ende. 😉
    Allerdings habe ich gehört, dass die 16Bit-Unicode-Zeichen von Windows NT & Nachfolger nicht der Weisheit letzter Schluss sind. Vollwertige Unicode-Zeichen haben mittlerweile 32 Bit. Damit kann Windows aber überhaupt nicht umgehen.

    Das alles hilft aber sylvi80 gar nichts, denn solange er nicht erklärt was für ein Typ string ist kann ihm niemand helfen.

    p.s.:
    Nur dass keine Missverständnisse auftreten: wchar_t ist kein C-String, sondern ein einziges (breites) Zeichen.



  • flyingCoder schrieb:

    Ich glaube, dass es nichts mit "Standard C" zutun hat

    Standard C kennt wchar_t (siehe stddef.h), für Standard C++ ist es sogar ein builtin Typ.
    @sylvi80
    In C++ gibt es den Typ string, in C nicht. Und string besteht aus char Elementen, für wchar_t gibt es in C++ wstring.
    Dein Code Beispiel sagt mir übrigens überhaupt nix. Willst du nun ein Zeichen in einen String der Länge 1 umwandeln oder willst du ein Zeichen in einen String einfügen ?


Anmelden zum Antworten