首页 > 学院 > 开发设计 > 正文

C语言宽字符输出和转换

2019-11-06 06:58:54
字体:
来源:转载
供稿:网友

在locale.h头文件中有个setlocale函数,它的作用是设置运行时的字符集环境。一般C/C++编译器默认字符集环境为”C”,所以你要正常输出单个中文字符,或者用mbstowcs、wcstombs等C库函数的时候,需要设置字符集环境为中文。 setlocale函数的原型如下:

char *setlocale( int category, const char *locale );

第一个参数MSDN是这样描述的: The category argument specifies the parts of a PRogram’s locale information that are affected。 大意是,这个参数指定哪一部分受你给定的语言环境所影响。具体的category请参考MSDN。

第二个参数就是你所指定的语言环境。

一般中文的有如下设置: “chinese” “chinese-simplified” or “chs” “chinese-traditional” or “cht”

例子1: 输出单个中文字符

setlocale(LC_ALL, "chs"); wprintf(L"%c", L'你');

例子2: 窄字符转换为宽字符 mbstowcs函数原型如下:

size_t mbstowcs( wchar_t *wcstr, const char *mbstr, size_t count );

第一个参数是wchar_t[]的宽字符串缓冲区,转换后,结果保存在里面。 第二个参数是需要转换的char[]字符串 第三个转换的最大字节数,一般填上wchar_t[]数组的大小即可

转换单个字符

setlocale(LC_ALL, "chs"); wchar_t w = 0; char c[3] = "你"; mbstowcs(&w, c, 1);

例子3: 宽字符转换为窄字符 wcstombs函数原型如下:

size_t wcstombs( char *mbstr, const wchar_t *wcstr, size_t count );

第一个参数是char[]的宽字符串缓冲区,转换后,结果保存在里面。 第二个参数是需要转换的wchar_t[]字符串 第三个转换的最大字节数,一般填上char[]数组的大小即可

转换单个字符

setlocale(LC_ALL, "chs"); wchar_t w = L'你'; char c[3] = ""; wcstombs(c, &w, 3); printf("%c%c/n", c[0], c[1]);
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表