zoukankan      html  css  js  c++  java
  • 使用 “Unicode 字符集 ” 使用错误,应该使用 “使用多字节字符集”

    “void ATL::CStringT<BaseType,StringTraits>::Format(const wchar_t *,...)”: 不能将参数 1 从“const char [29]”

    出现上面的问题,应该使用多字节字符集

    案例地址,百度知道引用

    问题:

    “void ATL::CStringT<BaseType,StringTraits>::Format(const wchar_t *,...)

    CString strDate,strTime;
    SYSTEMTIME st; //获取本地时间
    GetLocalTime(&st);
    strDate.Format("%4d-%2d-%2d",st.wYear,st.wMonth,st.wDay);
    strTime.Format("【%4d:%2d:%2d】",st.wHour,st.wMinute,st.wSecond);
    GetDlgItem(IDC_STATIC_Time)->SetWindowText(strDate + strTime);

    SetTimer(1,1000,NULL);
    return TRUE;

    error C2664: “void ATL::CStringT<BaseType,StringTraits>::Format(const wchar_t *,...)”: 不能将参数 1 从“const char [12]”转换为“const wchar_t *”
    1>生成失败。


    回答:
    你用的是VC2005或者更高的版本吧?
    VC2005及更高版本默认使用Unicode字符集,CString里存的是宽字符,也就是wchar_t,而不再是char。你可以这么写:
    strDate.Format(_T("%4d-%2d-%2d"),st.wYear,st.wMonth,st.wDay);
    strTime.Format(_T("%4d:%2d:%2d"),st.wHour,st.wMinute,st.wSecond);
    以后写程序的时候,定义字符串变量,不要用char*,而用TCHAR*。所有字符串常量,不要直接用"",而要用_T("")。举个例子:
    TCHAR* str = _T( "Hello, World" );
    MessageBox( _T( "Hello" ));
    当然,我上面说的是在MFC里面。写控制台程序的话,就不用了。



  • 相关阅读:
    LeetCode具体分析 :: Recover Binary Search Tree [Tree]
    [leetcode] Path Sum
    System、应用程序进程的Binder线程池和Handler消息循环
    R(二): http与R脚本通讯环境安装
    R(一): R基础知识
    Hive(五):hive与hbase整合
    Hive(六):HQL DDL
    Hive(四):c#通过odbc访问hive
    Hive(三):SQuirrel连接hive配置
    Hive(二):windows hive ODBC 安装
  • 原文地址:https://www.cnblogs.com/arxive/p/5379248.html
Copyright © 2011-2022 走看看