Problem bei der Konvertierung von Zeichen



  • Tach zusammen,

    ich fummel schon seit Stunden an einem kleinem Problem rum.

    Und zwar arbeite ich mit Named Pipes die UNICODE kompatibel sein müssen.

    wchar_t  * buffer[128];
    BOOL success = ReadFile(pipeHandle, buffer, 128, &readCount, NULL );
    

    Nun möchte ich den ausgelesenen buffer in einen std::wstring konvertieren, und das ist genau der Punkt an dem ich hänge.

    Mit:

    std::wstring wstr(*buffer);
    

    crasht mir mein Programm leider immer, ich weis auch nicht mehr was ich machen soll.

    Wäre super wenn mir jemand nen Tipp geben könnte.



  • Wäre es nicht eher

    wchar_t buffer[128];
    std::wstring wstr(buffer);
    

    ? Du willst schliesslich ein Array von wchar_t s, und nicht von Zeigern auf wchar_t s, oder?


  • Administrator

    Kein Wunder, du übergibst dem ReadFile ein Puffer auf Zeiger zu wchar_t Objekten, welche nicht vorhanden sind. Das ganze sollte wohl eher so lauten:

    wchar_t buffer[128]; // Den Stern weggenommen.
    BOOL success = ReadFile(pipeHandle, buffer, 128, &readCount, NULL );
    
    std::wstring str(buffer, readCount);
    // Oder auch ohne readCount, so lange du garantieren kannst, dass buffer eine Null-Terminierung hat.
    

    Grüssli


Anmelden zum Antworten