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

在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()释放。

代码:

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

原文地址:https://www.cnblogs.com/hgy413/p/3693664.html