zoukankan      html  css  js  c++  java
  • [error] MFC错误不能将参数1从"const char [3]"转换为"const wchar_t *"

    在做项目中经常遇到很多错误,这里我仅仅把自己遇到的一些错误和解决方法写出,供自己和大家查看. 
    代码如下:

    CRect rect;
    GetClientRect(&rect);
    CString str;
    str.Format("%ld",rect.bottom);
    MessageBox(str);

    错误提示: 
    error C2664: “void ATL::CStringT<BaseType,StringTraits>::Format(const wchar_t *,...)”: 不能将参数 1 从“const char [3]”转换为“const wchar_t *”. 
    解决方案: 
    1.由于VS默认字符集为UNICODE,可以使用_T("")宏,让程序支持Unicode编码.定义于tchar.h. ( 详见百科: _T() )

    /* Generic text macros to be used with string literals and character constants.
       Will also allow symbolic constants that resolve to same. */
    
    #define _T(x)       __T(x)
    #define _TEXT(x)    __T(x)

    使用时的具体代码方法:str.Format(_T("%ld"),rect.bottom); 
    注意我在使用:str.Format(_T("%ld %ld %d %d",rect.left,rect.top,rect.Height(),rect.Width()));会提示warning:_T()实参太多,而且对应的数据也是错误的.故应修改成str.Format(_T("%ld %ld %d %d"),rect.left,rect.top,rect.Height(),rect.Width());正确. 
    2.同时也可以把工程设置多字节集. 
    设置步骤:调试->XXX项目 属性->配置属性->常规->字符集->使用多字节集.但建议使用Unicode能避免很多字节型错误.

    虽然这类文章在百度很多,但我还是想以自己的视角写这类一些列自己遇到的错误的解决方法.最后希望该文章对大家有所帮助.参考资料: http://bbs.csdn.net/topics/380162797 

  • 相关阅读:
    day7
    day 6
    day4
    An Experimental Comparison of Min-Cut/Max-Flow Algorithms for Energy Minimization in Vision
    参数初始化之Xavier初始化
    使用tensorboardX可视化Pytorch
    使用visdom可视化pytorch训练过程
    pytorch与torchvision版本、tensorflow与keras版本
    luarocks和hdf5安装
    docker常见问题
  • 原文地址:https://www.cnblogs.com/jack-jia-moonew/p/4238051.html
Copyright © 2011-2022 走看看