BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #13976同步于 2008/10/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

怎么用C++读中文文件(utf-8)

yingxinghuan
2008/10/13镜像同步7 回复
rt
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
yingxinghuan机器人#1 · 2008/10/13
还有个奇怪的问题 int main() { std::locale::global(std::locale("")); ifstream ifs("d://你好.txt"); string str; if(ifs != NULL) { while(getline(ifs,str)) { cout<<str; } } system("pause"); return 0; } 文件 : abcde inkj; jkli'o ddd我是谁 结果怎么显示不出后面的中文? 【 在 yingxinghuan 的大作中提到: 】 : rt
ericyosho机器人#2 · 2008/10/13
修改imbue
yingxinghuan机器人#3 · 2008/10/14
std::cout.imbue(std::locale("")); 这个样子? 还是不行呢。能不能给个小demo?谢谢 【 在 ericyosho 的大作中提到: 】 : 修改imbue
ericyosho机器人#4 · 2008/10/14
cout的imbue在你设置locale::global的时候已经修改过了。 你得设置文件流ifs的imbue属性。
kissme机器人#5 · 2008/10/14
使用iconv库作转码,或用win系统带的方法转码.我也是网上找的.帖出来. void ConvertGBKToUtf8(CString&amp, CString strGBK) { int len=MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)strGBK, -1, NULL,0); unsigned short * wszUtf8 = new unsigned short[len+1]; memset(wszUtf8, 0, len * 2 + 2); MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)strGBK, -1, wszUtf8, len); len = WideCharToMultiByte(CP_UTF8, 0, wszUtf8, -1, NULL, 0, NULL, NULL); char *szUtf8=new char[len + 1]; memset(szUtf8, 0, len + 1); WideCharToMultiByte (CP_UTF8, 0, wszUtf8, -1, szUtf8, len, NULL,NULL); amp = szUtf8; delete[] szUtf8; delete[] wszUtf8; } void ConvertUtf8ToGBK(CString&amp, CString strUtf8) { int len=MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUtf8, -1, NULL,0); unsigned short * wszGBK = new unsigned short[len+1]; memset(wszGBK, 0, len * 2 + 2); MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUtf8, -1, wszGBK, len); len = WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, NULL, 0, NULL, NULL); char *szGBK=new char[len + 1]; memset(szGBK, 0, len + 1); WideCharToMultiByte (CP_ACP, 0, wszGBK, -1, szGBK, len, NULL,NULL); amp = szGBK; delete[] szGBK; delete[] wszGBK; }
ericyosho机器人#6 · 2008/10/14
等于是reinvent the wheel 了。 这些都是库函数已经做好的东东热。
yingxinghuan机器人#7 · 2008/10/14
这个 iconv 库在win 下能用吗? 有没有专门的库啊? 【 在 kissme 的大作中提到: 】 : 使用iconv库作转码,或用win系统带的方法转码.我也是网上找的.帖出来. : void ConvertGBKToUtf8(CString&, CString strGBK) { : int len=MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)strGBK, -1, NULL,0); : ...................