0

我有一个用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]);

}

我做对了吗?或者有什么更好的想法来完成这项工作?

谢谢。

4

1 回答 1

2

您是否尝试过使用宽字符专业化?(ifstream和分别是over和wifstream的模板特化。)basic_ifstreamcharwchar_t

wifstream wifs("./file.txt");
wifs.imbue(locale("zh_CN.GBK"));
wchar_t wbuf[256];
wifs.read(buf, 255);
于 2012-07-29T05:06:50.673 回答