C++ 在写入文件的时候,如何设置流的编码方式为UTF-8 10

 我来答
百度网友db3efa6
2013-05-21
知道答主
回答量:47
采纳率:100%
帮助的人:23.5万
展开全部
wofstream wofile("file");
wofile.imbue(locale( "", locale::all ^ locale::numeric));
“”表示表示使用本地语言,这里当然相当于“chs”或者“chinese”。
locale::all表示使用该语言的所有格式设置进行编码转换!
^是异或,locale::numeric表示数字格式。这里的意思是避免转换数字格式!否则123456输出结果会成为123,456这种形式!
1)std::ofstream 支持中文的文件名,可以正常的写入中文(MBCS编码)==>std::string类型
(2)std::wofstream 支持中文的文件名,可以正常的写入中文常量(不带L),如果是带上L的话,需要将Locale设置成"chs"模式,对应std::wstring类型的变量(包含中文)写入文件时,一定要将Locale设置成"chs"模式,否则不能正常写入。
(3)宽字符的流(前面带w的)==>支持按照MBCS写文件,但是仅仅局限于常量比如std::wcout<<"wcout测试";对于MBCS的变量(std::string)来说将会产生编译错误,例:std::string str = "中文";std::wcout<<str;
(4)对于宽字符的流如果是指明使用Unicode的话(std::wstring),就需要相应的设置区域了,调用相应的imbue方法
(5)总结一般的读写文件使用std::ofstream就行了,支持汉语,==>包括文件名,和文件写入
空雪梦见
2013-05-21 · TA获得超过5596个赞
知道大有可为答主
回答量:2522
采纳率:75%
帮助的人:1150万
展开全部
fopen("xxx.txt", "w,ccs=UTF-8");
仅针对新版的VC有效。6.0不行的样子,2008记得可以,2005及以前不明

wfstream可以通过设置locale的方法实现我记得,不过VC的话似乎到了2012才给你utf8的类。
还是用C的接口的方式比较容易的样子
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
烦恼之风
2013-05-21 · TA获得超过130个赞
知道小有建树答主
回答量:200
采纳率:0%
帮助的人:66万
展开全部
工程属性里看看,我记得有的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式