none
VS2010中字符串格式化输出的问题 RRS feed

  • 问题

  • 在VS2010中字符串的格式化输出总是出错,要怎样改?

    str.Format("select * from %s",  tablename);

    提示错误为:cannot convert from 'void (__thiscall CxDlg::* )(CString)' to 'AFX_PMSG'

    cannot convert parameter 1 from 'const char [17]' to 'const wchar_t *'

    改为:str.Format(_T("select * from %s",  tablename));

    提示错误为:error C2440: 'static_cast' : cannot convert from 'void (__thiscall CxDlg::* )(CString)' to 'AFX_PMSG'

     warning C4002: too many actual parameters for macro '_T'

    在VC++6.0中就能正常输出,咋在VS2010中就出错.


    xiao
    2011年3月1日 1:18

答案

  • str.Format("select * from %s",  tablename);
    -->
    str.Format(_T("select * from %s"),  CString(tablename));
    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    2011年3月1日 3:23
    版主

全部回复

  • tablename是什么类型?char*还是wchar*?
    麻烦把正确答案设为解答。
    2011年3月1日 2:05
    版主
  • tablename 是CString 类型

    还有atoi()的转换也有问题,

    int result = 0;
    CString strValue = _T("");

    rs.Open(CRecordset::forwardOnly, Sql);
    rs.GetFieldValue((short)0, strValue);

    result   =  atoi(strValue );

    错误提示为: 'atoi' : cannot convert parameter 1 from 'const wchar_t [9]' to 'const char *'

    上面的问题在VC++6.0中都能调试通过.在VS2010中就不行.


    xiao
    2011年3月1日 2:54
  • str.Format("select * from %s",  tablename);
    -->
    str.Format(_T("select * from %s"),  CString(tablename));
    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    2011年3月1日 3:23
    版主
  • 使用wtoi()。


    麻烦把正确答案设为解答。
    2011年3月1日 7:28
    版主
  • 谢谢了,

    用_ttoi()也行


    xiao
    2011年3月1日 11:44