convertierung von BSTR nach String
möchte unter VC++ einen BSTR so konvertieren, dass ich ihn in eine Textdatei schreiben kann (mit fprintf())
ich möchte in meinen cpp eien convertierung von BSTR auf einen printbaren String durchführen.
aber egal wie ich es versuche, der compiler meldet immer wieder irgendwelche fehler, die ich nicht verstehe.
hab im google gesucht und hunderte beispiele gefunden, aber keine die ich verstanden hätte
kann mir jemand einen tipp geben?
oder das kurze codeschnippsel das ich benötige hier einfach posten?
please
thx
jürgen
ich möchte in meinen cpp eien convertierung von BSTR auf einen printbaren String durchführen.
aber egal wie ich es versuche, der compiler meldet immer wieder irgendwelche fehler, die ich nicht verstehe.
hab im google gesucht und hunderte beispiele gefunden, aber keine die ich verstanden hätte
kann mir jemand einen tipp geben?
oder das kurze codeschnippsel das ich benötige hier einfach posten?
please
thx
jürgen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 19561
Url: https://administrator.de/forum/convertierung-von-bstr-nach-string-19561.html
Ausgedruckt am: 22.12.2024 um 20:12 Uhr
1 Kommentar
Moin ketchup,
jo, Dein Codeschnipsel könnte helfen...
Grundsätzlich ist hilfreich ein Blick auf die WideCharToMultiByte() in MSDN. Da gibt es brauchbare Beispiele zu dieser Konvertierung.
Wenn es einfach nur darum geht, die Wide/Unicode-BSTRs in Narrow/Ansi-String zu konvertieren, reicht auch
...
LPSTR theChar;
theChar = (LPSTR) theBSTR;
...
HTH Biber
[Edit]
pfffffff....so ne miese Bewertung.. dann poste ich lieber doch einen Codeschnipsel:
[/Edit]
jo, Dein Codeschnipsel könnte helfen...
Grundsätzlich ist hilfreich ein Blick auf die WideCharToMultiByte() in MSDN. Da gibt es brauchbare Beispiele zu dieser Konvertierung.
Wenn es einfach nur darum geht, die Wide/Unicode-BSTRs in Narrow/Ansi-String zu konvertieren, reicht auch
...
LPSTR theChar;
theChar = (LPSTR) theBSTR;
...
HTH Biber
[Edit]
pfffffff....so ne miese Bewertung.. dann poste ich lieber doch einen Codeschnipsel:
//------------------------//
// Convert BSTR to char * //
//------------------------//
inline char* ConvertBSTRToString(BSTR pSrc)
{
if(!pSrc) return NULL;
// Auch eingeschlossene NULLs konvertieren
DWORD cb,cwch = ::SysStringLen(pSrc);
char *szOut = NULL;
if(cb = ::WideCharToMultiByte(CP_ACP, 0,
pSrc, cwch + 1, NULL, 0, 0, 0))
{
szOut = new char[cb];
if(szOut)
{
szOut[cb - 1] = '\0';
if(!::WideCharToMultiByte(CP_ACP, 0,
pSrc, cwch + 1, szOut, cb, 0, 0))
{
delete szOut; // bei Fehler löschen;
szOut = NULL;
}
}
}
return szOut;
};