L是将字符串转换为unicode。"hello"的unicode和原来一样,而"你好"和原来的不一样,所以显示不出。直接用printf("你好");就可以,没什么要用wprintf(L"");?

解决方案 »

  1.   

    估计是因为dos 窗口不能显示unicode对了你是98还是2000。
    98是肯定不能显示unicode的。
      

  2.   

    可是我从excel里读到的数据就是wchar类型的,
    我只是想把它输出到屏幕。
      

  3.   

    我是在win2000下用vc6编的console应用程序。
    该程序从excel表格里读一个单元格的内容,
    得到的返回值是VARIANT类型的一个结构,
    该结构的vt成员变量值为VT_BSTR,
    于是经过下面几步可以得到数据。
    SAFEARRAY *array;
    WCHAR *szmsg;
    VectorFromBstr(value.bstrVal,&array);
    szmsg= (WCHAR *)array[0].pvData;
    但是szmsg指向的字符串是双字节的,我不知道该如何将其显示出来。
    如果单元格里的数据是英文则可以用wprintf()正确显示,
    但是如果单元格里的内容是中文则显示不出来。
      

  4.   

    unicode to ansi string: W2A
    ansi string to unicode: A2W或者用函数: MultiByteToWideChar(), WideCharToMultiByte()