程序如下
BSTR bstr1 = NULL;
bstr1 = SysAllocString( L"张三");
这样是对的
L"张三" 用了4个字节我知道这样写不对,因为wcstrBuffer用了8个字节,那应该怎样写,请高手赐教,谢谢
wchar_t wcstrBuffer[4];
char szTemp[] = "张三"
mbstowcs(wcstrBuffer, szTemp, 4);
BSTR bstr1 = NULL;
bstr1 = SysAllocString(wcstrBuffer);
BSTR bstr1 = NULL;
bstr1 = SysAllocString( L"张三");
这样是对的
L"张三" 用了4个字节我知道这样写不对,因为wcstrBuffer用了8个字节,那应该怎样写,请高手赐教,谢谢
wchar_t wcstrBuffer[4];
char szTemp[] = "张三"
mbstowcs(wcstrBuffer, szTemp, 4);
BSTR bstr1 = NULL;
bstr1 = SysAllocString(wcstrBuffer);
char szTemp[] = "张三"
mbstowcs(wcstrBuffer, szTemp, sizeof(szTemp));
BSTR bstr1 = NULL;
bstr1 = SysAllocString(wcstrBuffer);
mbstowcs(wcstrBuffer, szTemp, MB_CUR_MAX );
msdn里的例子就是这么用的,函数在到达MB_CUR_MAX或者遇到字符\0时就会返回
_bstr_t sz = L"张三";
BSTR bstr = sz.copy();
TCHAR szTemp[]="张三“;
BSTR bstrl=NULL;
bstrl=_com_util::ConvertStringToBSTR(szTemp);
就可以知道Unicode同ANSI字符串的区别