zoukankan      html  css  js  c++  java
  • Unicode下TRACE中文(_CrtDbgReport: String too long or IO Error) .解决办法

    Unicode下TRACE中文(_CrtDbgReport: String too long or IO Error)       

    在使用Unicode的工程项目中,如果是Debug模式。
    当TRACE Unicode字符串时,会输出提示:_CrtDbgReport: String too long or IO Error

    有两种方法来解决这个问题


    方法一:直接使用 OutputDebugString 替换 TRACE

    相关说明:
    函数原型:void OutputDebugString(LPCTSTR lpOutputString);
    功能说明:该函数输出一个字符串给调试器用于显示
    例子:
    原语句:TRACE(_T("\n这是一个TRACE语句"));
    替换为:OutputDebugString (_T("\n这是一个TRACE语句"));
    其他相关函数:
    1. CheckRemoteDebuggerPresent:用于判断指定进程是否在调试状态
    2. ContinueDebugEvent:使调试器继续运行之前报告了debugging event的线程
    3. DebugActiveProcess:使调试器附加到一个活动进程上并进行调试
    4. DebugActiveProcessStop:停止正在调试指定进程的调试器
    5. DebugBreak:在当前进程中触发一个断点
    6. DebugBreakProcess:在指定的进程中触发一个断点
    7. DebugSetProcessKillOnExit:空白
    8. FatalExit:空白
    8. FlushInstructionCache:空白
    10. GetThreadContext:空白
    11. GetThreadSelectorEntry:空白
    12. IsDebuggerPresent:空白
    13. OutputDebugString:
    14. ReadProcessMemory:空白
    15. SetThreadContext:空白
    16. WaitForDebugEvent:空白
    17. WriteProcessMemory:空白


    方法二:调用setlocale将语言环境设置成中文
    相关说明:
    函数原型:char *setlocale(int category,const char *locale );
    功能说明:给指定的类别设置语言环境
    注意:需要将原先的语言环境保存,待使用完后将其恢复。
    例子:
    #include <locale.h>
    char* old_locale = _strdup( setlocale(LC_ALL,NULL) );   

    setlocale( LC_ALL, "chs" );              

    //正常使用TRACE,退出时调用下面函数    

    setlocale( LC_ALL, old_locale);
    free(old_locale);
    其他相关函数:
    1. char *_strdup(const char *strSource );
       调用malloc分配内存,并将源字符串复制一份,需要用free释放。

    //======================================================================
    优缺点比较:
    方法一:优点:不需要增加任何函数调用,可以直接使用OutputDebugString输出字符串
                    缺点:不能格式化输出。需要预先将字符串格式化
    方法二:优点:可以直接使用TRACE,不加任何改变
                    缺点:需要进行例子中的操作。

    疑问:

    1. 调用char* plocale = setlocale(LC_ALL,NULL);    返回值是"C."对吗?

  • 相关阅读:
    sklearn—支持向量机
    sklearn—LinearRegression,Ridge,RidgeCV,Lasso线性回归模型简单使用
    技术文档翻译-------glove readme(1)
    python jieba分词(结巴分词)、提取词,加载词,修改词频,定义词库 -转载
    Word2Vec模型参数 详解
    aws ec2 硬盘扩容
    记一个python requests模块请求的报错
    ubuntu安装mysql, 修改初始密码一条龙服务
    mysql 创建用户, 分配权限, 删除用户
    sqlite删除数据
  • 原文地址:https://www.cnblogs.com/lidabo/p/2839433.html
Copyright © 2011-2022 走看看