在Unicode环境下让Trace打印出中文字体出来

本文介绍如何在Unicode环境下通过调整地域化信息使Trace能够正确打印中文字符,避免出现字符串过长或I/O错误的问题。

在Unicode环境下让Trace打印出中文字体出来?

实现条件,重新配置地域化信息为中文,再调用Trace,再恢复原来地域化信息即可

函数:

setlocale

原型: char * setlocale ( int category, const char * locale );

头文件:#include <locale.h>

返回值: 字符串

函数种类: 操作系统与环境

  内容说明:

  本函数用来配置地域的信息,设置当前程序使用的本地化信息

category参数:

LC_ALL :下面的全部选项 LC_COLLATE 配置字符串比较  LC_CTYPE 配置字符类别及转换 LC_MONETARY 配置金融货币  LC_NUMERIC 配置小数点后的位数 LC_TIME 配置时间日期格式,与 strftime() 合用 locale 参数: 若是空字符串 "",则会使用系统环境变量的 locale 。若 locale 为零(NULL),则不会改变地域化配置,返回当前的地域值。 C程序开始的时候的设置和 setlocale(LC_ALL,"C")相同 使用系统默认的设置调用setlocale(LC_ALL,"");

One can use the string pointer returned by setlocale in subsequent calls to restore that part of the program's locale information, assuming that your program does not alter the pointer or the string. Later calls to setlocale overwrite the string; you can use _strdup to save a specific locale string.

 

 _strdup 函数:

原型:extern char *strdup(char *s);

头文件:#include <string.h>

功能:复制字符串s

说明:返回指向被复制的字符串的指针,所需空间由malloc()分配且可以由free()释放。

代码:

char* old_locale = _strdup(setlocale(LC_ALL,NULL)); setlocale( LC_ALL, "chs" ); TRACE(_T("中文")); setlocale( LC_ALL,old_locale); free(old_locale);

否则在UNICODE下,会显示"_CrtDbgReport: String too long or IO Error"而不是“中文”

转载于:https://www.cnblogs.com/hgy413/archive/2011/01/06/3693664.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值