wchar_t



  • Ich habe noch ein Problem:

    Ich habe bei dem FAQ Eintrag konvertierung absolut nichts verstanden...

    ich überlege mir schon lange, wie ich diese zwei funktionen schreiben kann.

    void wchar_t* convert(const std::basic_string<char>& str)
    {
    }
    
    void char* convert(const std::basic_string<wchar_t>& str)
    {
    }
    


  • erstmal: Was ist bitteschön "void char*" für ein Typ? (wenn du schon Standard-Typen verwendest, dann gib bitte auch basic_string's zurück)

    Zweitens: char* nach wchar_t* dürfte recht einfach sein, indem du die Werte einzeln überträgst, die umgekehrte Richtung ist schwieriger, da nicht jedes wchar_t einem char zugeordnet werden kann.

    Drittens: Unter MFC gibt es ein Set von Makros (A2W,W2A und noch ein paar Variantionen wie T2W oder A2CW), die du dir eventuell mal ansehen solltest.



  • Welche Funktion ersetzt strlen(const char* str)?



  • Was meinst du mit "ersetzen"? (w)string's haben eine Memberfunktion length() und size(), für einfache wchar_t* kannst du wsclen() verwenden (vermutlich nicht portabel) oder selber etwas schreiben.



  • Warum funktioniert das hier nicht?

    bool image::load(const std::basic_string<wchar_t>& name)
    {
    // Dateiendung ermitteln
    std::basic_string<wchar_t> cap;
    for(unsigned int c = 0; c < name.length(); c ++)
    cap[c] = toupper(name[c]); // <--

    ...



  • man: toupper und andere Funktionen sind zwar als 'int' deklariert, sind aber in Wirklichkeit nur für char's vorgesehen.


Anmelden zum Antworten