你能把LPTSTR投射到BSTR吗?

Mas*_*gar 9 c++ windows com string-conversion

将LPTSTR直接转换为BSTR是合法的吗?

根据我对BSTR的理解,直接将一个LPTSTR转换为BSTR会给你留下一个损坏的长度前缀.示例代码明确指出字符串文字不能存储到BSTR.任何人都可以向我确认LPTSTR/LPCTSTR不能在不破坏长度前缀的情况下直接转换为BSTR吗?

编辑:

我的困惑是看到在调用COM对象时使用它.事实证明,在编译COM dll时,会生成一个.tli文件来创建一个中间方法.此方法采用类型_bstr_t.该_bstr_t可以采取LPTSTR在其构造,所以一切工程进展顺利.

Tim*_*mbo 8

如果您的程序是unicode并且LPTSTR因此是a LPWSTR,则可以使用SysAllocString将指针转换为宽字符串BSTR.

直接强制转换是不可能的,因为两者具有不同的内存表示.

如果使用C++,则可以使用_bstr_t类来简化BSTR字符串的使用.