我有一个用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]);
}
我做对了吗?还是有更好的主意来完成这项工作?
谢谢。
最佳答案
您是否尝试过使用宽字符专长? (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);