kostenloser Webspace werbefrei: lima-city


char* in wstring konvertieren?

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    primenic

    primenic hat kostenlosen Webspace.

    Hallo,

    wie aus dem Titel ersichtlich, möchte ich ein char* in einen wstring konvertieren. Da char* aus Bytes besteht und wstring intern ein Array aus Integern (oder jedenfalls so was in der Art) ist, stellt sich mir jetzt die Frage ob man zwischen den beiden Typen überhaupt konvertieren kann?! Ich hab schon ein bisschen gegoogelt, bin aber nicht so richtig fündig geworden. Gibt es eine Möglichkeit von char* zu wstring zu konvertieren?

    PS: Da die Suche momentan nicht funktioniert oder bei mir jedenfalls keine Ergebnisse ausgeworfen hat, wäre ich auch über einen Link zu einem anderen Beitrag dankbar ;-)

    Beitrag zuletzt geändert: 5.7.2010 19:30:39 von primenic
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. kochmarkus

    Co-Admin Kostenloser Webspace von kochmarkus

    kochmarkus hat kostenlosen Webspace.

    Das scheint in der Tat nicht ganz Trivial zu sein. Man muss erst aus dem char* ein wchat_t* machen (mithilfe von mbstowcs[1]) und kann dann daraus einfach über den Konstruktor von wstring sich ein neues Objekt erzeugen:

    Quick&Dirty:

    #include <cstring>
    #include <iostream>
    #include <cstdlib>
    
    int main(void) {
      char test[] = "hallo welt";
      int len = strlen(test);
      wchar_t wtest[len+1];
    
      mbstowcs(wtest, test, strlen(test));
      wtest[len] = '\0';
      std::wstring test2(wtest);
    
      std::wcout << test2 << std::endl;
      return 0;
    }


    [1]: http://www.cplusplus.com/reference/clibrary/cstdlib/mbstowcs/

    Beitrag zuletzt geändert: 5.7.2010 20:11:21 von kochmarkus
  4. Autor dieses Themas

    primenic

    primenic hat kostenlosen Webspace.

    OK danke, ich werds morgen mal versuchen.

    EDIT: Habs doch heute noch versuchen können. :biggrin:
    Also so wie du meinst gings bei mir nicht. Ich musste aus der Zeile

    wchar_t wtest[len+1];


    diese machen

    wchar_t* wstr = new wchar_t[len+1];


    Vom Prinzip her fast das Selbe, aber mit deiner Version meinte der Compiler "[...] error: Konstanter Ausdruck erwartet. [...]".

    Aber danke für die Hilfe :smile:

    Beitrag zuletzt geändert: 6.7.2010 10:41:43 von primenic
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!