linux c中char和wchar_t互转

2021-01-21  本文已影响0人  一路向后

1.源码实现

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <wchar.h>
#include <locale.h>

int char_to_wchar(wchar_t *pDest, const char *pSrc)
{
    int len = 0;
    int ret = 0;

    len = strlen(pSrc) + 1;

    if(len <= 1)
        return 0;

    ret = mbstowcs(pDest, pSrc, len);

    return ret;
}

int wchar_to_char(char *pDest, const wchar_t *pSrc)
{
    int len = 0;
    int ret = 0;

    len = wcslen(pSrc) + 1;

    if(len <= 1)
        return 0;

    ret = wcstombs(pDest, pSrc, len*sizeof(wchar_t));

    return ret;
}

int main()
{
    char a[64] = "你好,世界";
    wchar_t b[64];
    char c[64];

    memset(b, 0x00, sizeof(b));
    memset(c, 0x00, sizeof(c));

    setlocale(LC_CTYPE, "zh_CN.utf8");

    char_to_wchar(b, a);
    wchar_to_char(c, b);

    printf("%s\n", c);

    return 0;
}

2.编译源码

$ gcc -o example example.c

3.运行及其结果

$ ./example
你好,世界
上一篇 下一篇

猜你喜欢

热点阅读