printf("----------------%S\n", L"不一栽");

解决方案 »

  1.   

    用string形式打印宽字符数据肯定不行,L"不一栽"的第一个字节应该不是0,是汉字“不”的高字节,可能按照string形式打印出来是不可见字符。
      

  2.   

    这样用。
    wprintf("----------------%s\n", L"不一栽");
      

  3.   

    在printf前面加个w,wprintf(这个别用来输出宽字符用的。)
      

  4.   

    你不会是在Window程序里调用的吧。
      

  5.   

    如果想把程序写成char/wchar_t通用的版本的话。
    就这样写: L 换成 _T
    如果程序中定义 _UNICOUDE 和 UNICODE 的话,下面这段程序就是宽字符版,如果不定义程序是单字符版。_tprintf(_T("----------------%s\n"), _T("不一栽"));
      

  6.   

    如果想把程序写成char/wchar_t通用的版本的话。
    就这样写: L 换成 _T
    如果程序中定义 _UNICOUDE 和 UNICODE 的话,下面这段程序就是宽字符版,如果不定义程序是单字符版。_tprintf(_T("----------------%s\n"), _T("不一栽"));
    这个不是很明白。可以说得更详细一些吗?我编译时提示:'_tprintf' : undeclared identifier
      

  7.   

    加入这个头文件<tchar.h>_tprintf(_T("----------------%s\n"), _T("不一栽"));如果定义  _UNICOUDE 和 UNICODE 的话(也就是wchar_t宽字符版本),上面语句编译器解释为
    wprintf(L("("----------------%s\n"), L"不一栽");如果没有定义_UNICOUDE 和 UNICODE 的话(也就是单字符版本char),上面语句编译器解释为
    printf("----------------%s\n", "不一栽");你就可以只能维护一个版本的代码,而不是两个版本的代码.
      

  8.   

    谢谢笑天的回复。还得麻烦您我在“Preprocessor definitions”编辑框中添加 UNICODE 或者 _UNICODE 预处理宏指令头文件加  tchar.h然后代码改为_tprintf(_T("----------------%s\n"), _T("asdf不一栽"));执行结果为:----------------asdf是什么原因呢。
      

  9.   

    prinft 是什么函数 是C语言的标准函数啊 当然不能输出加个w试下
      

  10.   

    to 笑天
    windows 2000 SP4谢谢
      

  11.   

    仔细看看MSDN的Unicode主题
    一个Unicode字符占用十六位许多Unicode字符第二字节是0
    所以输出错误是正常的
    注意_t族函数不是标准c库函数只是微软定义的所谓通用函数
      

  12.   

    楼主应该好好看看unicode的相关知识啊