将char *转换为wchar_t *

时间:2012-07-29 02:55:27

标签: c++ wchar-t

我有一个用 gbk 编码的file.txt,我通过ifstream::read读取了一些字节并将它们存储到char缓冲区中,然后我要打印每个单词gbk中的缓冲区。

我认为这里需要wchar_t,所以我这样做:

int main()
{
    ifstream ifs("./file.txt");
    char buf[256];
    ifs.read(buf, 255);

    wchar_t wbuf[256];
    mbstowcs( wbuf, buf, 255);
    for (int i = 0; i < wcslen(wbuf); i++)
        wprintf(L"%c ", wbuf[i]);

}

我做得对吗?或者更好的想法来完成这项工作?

感谢。

1 个答案:

答案 0 :(得分:2)

您是否尝试过使用广角字母专业版? (ifstreamwifstream分别是basic_ifstream超过charwchar_t的模板专精。)

wifstream wifs("./file.txt");
wifs.imbue(locale("zh_CN.GBK"));
wchar_t wbuf[256];
wifs.read(buf, 255);