从_bstr_t到std::string的转换
Conversion from _bstr_t to std::string
我只是想把_bstr_t转换成std::string..
我找到了一个关于这个问题的帖子(链接),并完全按照描述做了,但是它引发了异常…
我是这样做的:
_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,导致某些字符无法正确转换。
相关文章:
- 使用char类型将decimal转换为string,将string转换为decimal
- 将C++ std::string 转换为 UTF-16-LE 编码的字符串
- 如何将带有十六进制值的 std::string 转换为 std::vector<无符号字符>
- 无法从'const std::string [3]'转换为'std::string'
- 从 std::string 转换为 const 无符号整数
- C++ 模板函数无法将"std:string"转换为"double"作为回报
- 将 std::string 转换为 const char* 用于 printf 消耗
- 将 std::string 转换为 const tchar*
- 如何在PHPCPP库中将C++map<string,map<string>>转换为php::value?
- 将 std::string 转换为具有特殊字符的 FString (TCHAR / wstring)
- 将 std::string 转换为 wchar_t* 的类型定义
- 在 C++03 中将 std::string 转换为 int
- 将 'hana::string' 转换为 'constexpr const char (&)[]'
- 正确的交叉平台从 std::string 转换为 'const TCHAR *'
- 从矢量<string>转换为wchar_t**
- 将 std::vector<std::string> 转换为 const char* const*
- 将 std::string 转换为 boost::asio::streambuf
- C++ SNAP 库将 std::string 转换为 TStr
- 自动将 std::string 转换为 char* 而无需每次都调用 c_str() 的最佳方法
- 将 std::string 转换为 Swift String