试过很多方法...
比如
WCHAR buffer[260];wscanf(_L"%s", buffer);
wscanf(_L"%ls", buffer);
wscanf(_L"%S", buffer);
wscanf(_L"%lS", buffer);英文基本上都没问题, 但是中文始终不能实现.(其实的确是输入进去了, 用同样的format也可以用printf准确输出, 但是buffer的内容的确不是中文, buffer的字符数也千差万别)另外, 除了这种CRT的方法外, Windows API里面有没有其他方法能够进行UNICODE输入输出的?

解决方案 »

  1.   

    wscanf(L"%S", buffer);
    应该不加下划线吧
      

  2.   


    SORRY. 手抖了... 没有下划线 _T习惯了... 就是L... 问题不变
      

  3.   

      result = wscanf( L"%d %f %hc %lc %S %ls", &i, &fp, &c, &wc, s, ws );
      

  4.   


    别贴 MSDN源码, 我都试过了. 英文可以, 中文不行
      

  5.   

    void main( void )
    {
       int   i, result;
       float fp;
       char  c, s[81];
       wchar_t wc, ws[81];   printf( "\n\nEnter an int, a float, two chars and two strings\n");   result = scanf( "%d %f %c %C %s %S", &i, &fp, &c, &wc, s, ws );
       printf( "\nThe number of fields input is %d\n", result );
       printf( "The contents are: %d %f %c %C %s %S\n", i, fp, c, wc, s, ws);   wprintf( L"\n\nEnter an int, a float, two chars and two strings\n");   result = wscanf( L"%d %f %hc %lc %S %ls", &i, &fp, &c, &wc, s, ws );
       wprintf( L"\nThe number of fields input is %d\n", result );
       wprintf( L"The contents are: %d %f %C %c %hs %s\n", i, fp, c, wc, s, ws);
    }MSDN上的,楼主还有问题的话,哪就不是这个函数了
      

  6.   

    string_1 是 WCHAR数组
    终端输入的内容是 中文 两个字
      

  7.   


    我对你无语了, TCHAR是个宏, WCHAR也是个宏, 在UNICODE参数下, 他们都是wchar_t或者unsigned short另外我求你别贴MSDN代码了, 我都试过, 在format相同时可以输入输出, 但是在内存中的数据是并非是WCHAR数据. 英文可以, 中文不行.
      

  8.   


    我很感谢你回答我的问题, 但是我觉得你没有认真考虑过我的问题.
    您只是根据现象直观地判断并且给出解决方法.MSDN说那样的方法是可以把数据输入到WCHAR数组中的, 英文等等都是用UTF16编码表示.
    偏偏中文不行, 仍然是使用GB2312的值, 保存到对应的WCHAR中...这样它既不是UTF16的WCHAR字串, 也不是ANSI的CHAR字串
    这样畸形的东西 用 MultiByteToWideChar, WideCharToMultiByte 也是有问题的... 另说.