簡體   English   中英

從_bstr_t轉換為std :: string

[英]Conversion from _bstr_t to std::string

我只是想將_bstr_t轉換為std :: string。

我發現了一個有關此問題的帖子( LINK ),並且完全按照說明進行操作,但是它引發了異常。

這是我所做的:

_bstr_t BString;
std::string STDString((char *) BString);

我得到這個錯誤:

0CxC00000005: Access violation reading location 0x00000000

具體來說,查看調用堆棧后,iosfwd.h中出現錯誤:

static size_t __CLRCALL_OR_CDECL length(const _Elem *_First)
    {   // find length of null-terminated string
    return (*_First == 0 ? 0
        : _CSTD strlen(_First));
    }


將_bstr_t轉換為std :: string ..的正確方法是什么?

謝謝

BString可以保留一個null值,而std::string不能,因此您必須解決這個問題。

const char* buf = BString;
int bstrlen = BString.length();
std::string STDString( buf?buf:"", bstrlen);

請注意,BString可能在內部使用UTF16,因此char *重載將使用當前語言環境選擇字節編碼,可能為CP-1252,從而導致某些字符無法正確轉換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM