gpt4 book ai didi

c++ - 从 _bstr_t 到 std::string 的转换

转载 作者:搜寻专家 更新时间:2023-10-31 01:43:47 26 4
gpt4 key购买 nike

我只是想将 _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,导致某些字符无法正确转换。

关于c++ - 从 _bstr_t 到 std::string 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24540370/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com