ncursesw: Problem mit wchar_t* und Funktion new_item();



  • Hallo zusammen,

    ich programmiere an einem ncurses LDAP Adressbuchclient.
    Leider gibt mir LDAP alle Werte UTF-8 codiert aus. die ldap_utf8.h liefert auch die passende Funktion mit um einen utf8 string in eine wcs (wchar_t)* umzuwandeln.
    So weit so gut.

    Um nun aber die Einträge in einem Menü anzeigen zu lassen muss man die Funktion new_item() aus der ncursesw/menu.h bemühen.
    Diese hat aber leider auch unter ncursesw nur den folgenden Prototyp:

    ITEM *new_item(const char *name, const char *description);
    

    Kennt jemand eine Möglichkeit wie ich meinen wchar_t* string der funktion übergeben kann?
    Einfach casten geht in die Hose da das zweite Byte von wchar_t als '\0' interpretiert wird wenn es ein einfacher ASCII Buchstabe ist.

    Ich habe vielleicht an die Funktion

    size_t wcrtomb(char *s, wchar_t wc, mbstate_t *ps);
    

    der wchar.h gedacht. Weis aber nicht ob das dann funktioniert.

    Hat jemand eine Idee wie ich das hinbekommen könnte?



  • Dieser Thread wurde von Moderator/in phlox81 aus dem Forum Andere GUIs - Qt, GTK+, wxWidgets in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Probier doch wcrtomb einfach aus.



  • Geht leider nicht.
    Die Funktion new_item liest mit strlen die Länge des Strings. Wenn es sich bei dem ersten Buchstaben um ein Buchstaben handelt bei dem nur das erste Byte gesetzt ist wird das zweite Byte als '\0' interpretiert und somit macht new_item ein solchen String zu einem Buchstaben.

    Gruß Alex



  • Hast du denn schon mal versucht, die UTF-8 Daten der Funktion zu übergeben?
    Soweit ich dies gegoogelt habe, arbeitet ncursesw mit UTF-8.


Anmelden zum Antworten