BSTR von Console Einlesen.



  • Hallo ich möchte einen BSTR (VS 2003) von der Console einlesen, leider bin ich da überhaupt nirgendwo fündig geworden wie man so etwas bewerkstelligen könnten.

    Normal erstellt man ja einen BSTR wie folgt
    BSTR inStr = SysAllocString(L"*");

    Aber wie mache ich das jetzt wenn ich nur einen char* den ich von der Konsole gelesen habe, zur Verfügung habe?

    Danke
    -- Daniel


  • Mod

    Den char* in einen CString z.B. laden und AllocSysString aufrufen.
    Oder die Größe des BSTR allokieren und per Konvertierung mbtowc.
    Oder per T Makros T2BSTR oder A2BSTR!

    Viele Wege führen nach Rom...



  • Ich hab das wie folgt versucht:

    BSTR inStr;
    char inChr[152];
    wchar_t inWChr[152];

    cin >> inChr;
    _USE(cout.getloc(), ctype<wchar_t>).widen(inChr, inChr+strlen(inChr), inWChr);
    inStr = SysAllocString(inWChr);
    char* intest = _com_util::ConvertBSTRToString(inStr);

    nun ja und das was jetzt in intest bzw. inStr drinn steht ist länger als das was ich eingegeben habe... 😞

    Was mach ich da falsch?

    Danke
    -- Daniel



  • AFAIK hat die STL in VS2003 etwas Probleme mit wchar_t und Console...
    Siehe: http://blog.kalmbachnet.de/?postid=23

    Mit VS2005 wird es besser; hab es aber noch nicht getestet... sonst musst Du "ReadConsoleInputW" / "ReadConsoleW" verwenden...

    PS: Auch solltest Du darauf achten, dass Du überhaupt einen Unicode-Fähigen Foint eingestellt hast (der Standard-Font kann das nicht!; verwende Lucida Console)



  • Bin leider an VS 2003 und die Console gebunden 😉
    Hab es darum so geblößt:

    char *c="Hallo";
    unsigned short str[256];

    MultiByteToWideChar(CP_OEMCP,MB_PRECOMPOSED,c,-1,str,256);
    BSTR inStr = SysAllocString(str);

    Danke,
    -- Daniel


  • Mod

    Kurzform A2BSTR!


Anmelden zum Antworten