_CrtDbgReport: String too long or IO Error

摘自:http://www.cnblogs.com/BeyondTechnology/archive/2011/01/09/1931533.html

 

wprintf_s 不能正常 出中文的解决

使用如下方法 wprintf_s 出中文 往往出 现带 ? 的乱 :

wprintf_s (L "%s" ,(LPCWSTR )cmdLineArr [1]);

  解决方案 : 包含 文件 locale.h , 并在程序开始 setlocale (LC_ALL , "chs" );

这样 wprintf_s 便能正常打印出中文字符串了 :

 // 指定当前程序的 编码为简 体中文, 这样 才能用wprintf 正确 出中文


#include <locale.h>
setlocale(LC_ALL, "chs");

样对 TRACE(_T(" 第一个: %s, 第二个: %s"),str1,str2); ,如果运行 出信息:“ _CrtDbgReport: String too long or IO Error” 。亦可用上述方法解决。

 

TRACE 在定 义时 就已考 unicode ,所以不需要加 _T

可以采用 OutputDebugString() 来代替 TRACE ,它自 采用 UNICODE 和非 UNICODE

 

Microsoft Visual Studio Feedback 上的反馈

http://connect.microsoft.com/VisualStudio/feedback/details/425215/bug-with-trace-and-crtdbgreport

There is a bug with TRACE and _CrtDbgReport when working with the wide string.
_CrtDbgReport can't handle the wide string correctly when the wide string contains non-ascii characters.

貌似在 Beta 2 of Visual Studio 2010. 修正了该 bug

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值