wchar_t* nach char* umwandeln?



  • Hallo,

    bei reinterpret_cast <char> (wZeichenkette);* schluckt es zwar der Compiler, aber es kommt nichts Gebräuchliches dabei raus. (Genauer gesagt, nur das erste Zeichen des Strings) Weis jemand ne Lösung?

    Danke schonmal.



  • den pointer zu 'reinterpretieren' ändert noch lange nicht die daten 😉
    einfach jedes zweite zeichen überspringen könnte helfen...
    🙂



  • Hey, pale dog auch noch wach... Ja das mit dem reinterpretieren war einen Versuch wert. Die Umsetzung deiner vorgeschlagenen Möglichkeit gestaltet sich schon etwas umständlich... Dann müsste ich jeden wchar_t String mit einer Schleife durchlaufen, den Lesepointer inkrementieren, und bei (i% 2) continuen. Oder ich definiere einfach ne inline-Funktion dafür, und übergebe ihr einfach den zu konvertierenden String... Gibt's da nur diese Möglichkeit, oder weis noch jemand evtl. eine Standardlösung?

    Achja, und wie weise ich einem wchar_t eigentlich eine Zeichenkette zu? Sorry, das sind meine ersten Versuche mit Wide Charakterzeugs...

    wchar_t *text = "Beispieltext" // invalid conversion from `const char*' to `wchar_t' 
    
    std::wstring text2 = "Bla"; 
    // conversion from `const char[4]' to non-scalar type `std::basic_string<wchar_t,
    // std::char_traits<wchar_t>, std::allocator<wchar_t> >' requested
    


  • du könntest sowas ähnliches versuchen:

    wstring wide = "Beispieltext";
    string narrow (wide.begin(), wide.end()); // zusammenquetschen
    

    aber bestimmt geht's noch besser. ich versteh' nicht viel von C++



  • Ja, wiegesagt, das kann ich erst versuchen, wenn ich weis, wie ich eine Zeichenkette einem wstring zuweisen kann.



  • Alle wichtigen Infos zu Strings findest du hier.

    Aber mal kurz ein Beispiel:

    std::wstring h = L"Hallo";
    


  • Danke Artchi, deine Seite hat mir übrigens schon sehr oft weitergeholfen 😉 Ich habe es jetzt mit der Methode von pale gelöst. Wer mehr zu dem Thema wissen möchte, sollte sich den Thread angucken: http://www.c-plusplus.net/forum/viewtopic-var-t-is-168607.html


Anmelden zum Antworten