char 与 wchar_t 的互相转化

来源:互联网 发布:wps如何筛选excel数据 编辑:程序博客网 时间:2024/06/06 01:01
/* * 字符集的相互转化一直以来困扰着我 * 这篇文章主要是针对 char 和 wchar_t 的相互转化 * C的标准库对这两种不同类型的字符类型提供了不同的操作函数 * 另外说明一下,C++的标准IO库虽然解决了无类型输出的问题,但是各个编译器对它的支持有差异,不建议使用 * 相反,C的国际化得到了很好的兼容性 * 详细的可以参考下面的链接: *      http://www.cnblogs.com/zyl910/archive/2013/01/20/wchar_crtbug_01.html */#include <cstdio>#include <clocale>#include <cstdlib>int main() {    const int LEN = 1024;    char s1[LEN] = "我是好人!";    wchar_t ws1[LEN];    char s2[LEN];    wchar_t ws2[LEN] = L"你也是好人!";    int ret = 0;    char *locale_buffer = setlocale(LC_ALL, NULL);    setlocale(LC_ALL, "");    ret = mbstowcs(ws1, s1, LEN);    if (ret == LEN) ws1[LEN-1] = L'\0';    printf("%s", s1);    putchar('\n');    if (ret) printf("%ls", ws1);    putchar('\n');    ret = wcstombs(s2, ws2, LEN);    if (ret == LEN) s2[LEN-1] = '\0';    printf("%ls", ws2);    putchar('\n');    if (ret) printf("%s", s2);    putchar('\n');    setlocale(LC_ALL, locale_buffer);    return 0;}
0 0
原创粉丝点击