我有一个用 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]);
}
我做得对吗?或者更好的想法来完成这项工作?
感谢。
答案 0 :(得分:2)
您是否尝试过使用广角字母专业版? (ifstream
和wifstream
分别是basic_ifstream
超过char
和wchar_t
的模板专精。)
wifstream wifs("./file.txt");
wifs.imbue(locale("zh_CN.GBK"));
wchar_t wbuf[256];
wifs.read(buf, 255);