BSTR in unsigned char wandeln und zurück



  • Guten Abend !

    Ich versuche einen BSTR (vorerst) in einen char zu wandeln, doch das klappt leider nicht so wie ich das möchte. Ich bekomme nur das erste Zeichen angezeigt.

    Hier der Code

    #include <windows.h>
    #include <oleauto.h>
    #include <iostream>
    
    using namespace std;
    
    void test(void) {
    
        BSTR bstr_string;
    
        bstr_string = SysAllocString(OLESTR("Hallo Welt."));
    
        int len = SysStringLen(bstr_string) + 1;
    
        char *s_char = new char[len];
    
        WideCharToMultiByte(CP_ACP, NULL, bstr_string, len, s_char, len, NULL, NULL);
    
        cout << *s_char << endl;
    }
    

    Ich wäre sehr erfreut wenn mir jemand helfen würde.
    Wie bekomme ich allerdings gleich einen unsigned char daraus ???



  • *s_char ist ja auch nur ein Zeichen. Mach doch mal das Sternchen weg.



  • MFK schrieb:

    *s_char ist ja auch nur ein Zeichen. Mach doch mal das Sternchen weg.

    Das verstehe ich nicht. Ich habe doch Speicher reserviert und new mit [] benutzt. Also müsste das doch ein Array von Zeichen sein, denn
    wenn ich

    char s_char[12];
    

    deklariere und dann an die Funktion übergebe erhalte ich ein/das korrekte/s Ergebnis aber ebenso wenn ich

    char *s_char = new char[12];
    

    deklariere und dann aber so an die Funktion übergebe.

    &(*s_char)
    

    Irgendwie steige ich da nicht ganz durch.


Anmelden zum Antworten