c语言输入宽字符,C/C++宽字符中文输出问题

在C++中,处理宽字符中文输出时,`cout`和`wcout`、`ofstream`和`wofstream`以及`printf`和`wprintf`存在不同的问题。文章介绍了设置locale和避免混合使用不同输出方式的方法来解决中文输出问题。
摘要由CSDN通过智能技术生成

C/C++宽字符中文输出问题

(2015-05-03 15:48:07)

标签:

it

字符串

中文

语句

分类:

其他

使用C++标准库的iostream,可以方便地将控制台、文件、字符串以及其它可扩充的外部表示作为流来处理,但要处理中文,却会碰到很多问题。本人原来没怎么用过这个iostream,这几天尝试用这个写点东西,一会儿不能输出中文,一会儿不支持中文文件名的,搞得头大。网上搜了搜,没有发现适用于所有情况的解决方案。不过后来自己经过多次测试,基本解决了这些问题,现在写成文字作为一个总结,也供碰到同样问题的朋友参考。关于C语言中的printf和wprintf的中文输出,本文也进行了探讨。

需要说明的是,我的开发环境是VS2005(标准库当然也是微软实现的),不保证其它环境下是相同的效果。

1、cout和wcout

在缺省的Clocale下,cout可以直接输出中文,但对于wcout却不行。对于wcout,需要将其locale设为本地语言才能输出中文:

wcout.imbue(locale(locale(),"",LC_CTYPE));//①

也有人用如下语句的,但这会改变wcout的所有locale设置,比如数字“1234”会输出为“1,234”。

wcout.imbue(locale(""));

2、ofstream和wofstream

在缺省的Clocale下,ofstream能正确输出中文到文件中ÿ

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值