试过很多方法...
比如
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输入输出的?
比如
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输入输出的?
解决方案 »
- tree control控件如何添加消息处理函数.
- OPENGL超级宝典源代码!?
- 如何调用批处理文件
- 请教:关于BMP文件的颜色表的问题。
- 使用DB-Library连接MSSQL数据库,为什么多次重连后会出现连接不上的错误
- 怎样获取CComboBox中下拉列表中选定一项的内容?
- 请问能不能把类的成员函数做为线程函数使用????
- 一个关于TRUE、true、FALSE、false的问题
- 寻找vc开发人员,开发数码冲印客户端.现金支付,需要有相关开发经验的人员!!!!!我在北京,联系QQ 50836271
- ISAPI和ADO的问题
- LSP防火墙的消息通信
- 关于《windows via c&C++》中线程的疑问,感觉作者写的有问题。
应该不加下划线吧
SORRY. 手抖了... 没有下划线 _T习惯了... 就是L... 问题不变
别贴 MSDN源码, 我都试过了. 英文可以, 中文不行
{
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上的,楼主还有问题的话,哪就不是这个函数了
终端输入的内容是 中文 两个字
我对你无语了, TCHAR是个宏, WCHAR也是个宏, 在UNICODE参数下, 他们都是wchar_t或者unsigned short另外我求你别贴MSDN代码了, 我都试过, 在format相同时可以输入输出, 但是在内存中的数据是并非是WCHAR数据. 英文可以, 中文不行.
我很感谢你回答我的问题, 但是我觉得你没有认真考虑过我的问题.
您只是根据现象直观地判断并且给出解决方法.MSDN说那样的方法是可以把数据输入到WCHAR数组中的, 英文等等都是用UTF16编码表示.
偏偏中文不行, 仍然是使用GB2312的值, 保存到对应的WCHAR中...这样它既不是UTF16的WCHAR字串, 也不是ANSI的CHAR字串
这样畸形的东西 用 MultiByteToWideChar, WideCharToMultiByte 也是有问题的... 另说.