L是将字符串转换为unicode。"hello"的unicode和原来一样,而"你好"和原来的不一样,所以显示不出。直接用printf("你好");就可以,没什么要用wprintf(L"");?
解决方案 »
- 如何处理heapalloc分配失败
- CListCtrl "Stack overflow"异常
- 请问屏幕坐标系和客户区坐标系的问题
- 如何把子窗口嵌入到另外一个子窗口
- 我输出了一个文件1k,但打开什么也没有,怎么回事?在线急等!!!
- 关于代码页、字符集、编码之间联系的问题?
- 为何我的DLL参数用指针的形式传入传出都会发生错误?
- 求矩阵(大量)的特征值的的C++源程序或VC
- VC中有延迟函数吗? 类似于Delphi中的Delay(int s)
- 又是一个习题,来啊,明天下午交作业啊
- 哪里有侯捷的<<泛型技术 Genericity in C++>>和<<The C++ Standard Library>>书买?
- 如何列出显卡、主板、声卡、USB设备的类型、编号、状态?
98是肯定不能显示unicode的。
我只是想把它输出到屏幕。
该程序从excel表格里读一个单元格的内容,
得到的返回值是VARIANT类型的一个结构,
该结构的vt成员变量值为VT_BSTR,
于是经过下面几步可以得到数据。
SAFEARRAY *array;
WCHAR *szmsg;
VectorFromBstr(value.bstrVal,&array);
szmsg= (WCHAR *)array[0].pvData;
但是szmsg指向的字符串是双字节的,我不知道该如何将其显示出来。
如果单元格里的数据是英文则可以用wprintf()正确显示,
但是如果单元格里的内容是中文则显示不出来。
ansi string to unicode: A2W或者用函数: MultiByteToWideChar(), WideCharToMultiByte()