CString strtmp;
int nPort;
         sscanf(strtmp, "%d", &nPort);
结果就出这种错误了,我用的是EVC,在VC里是一点错误也没有的,急啊

解决方案 »

  1.   

    D:\project\TstDlg.cpp(122) : error C2664: 'sscanf' : cannot convert parameter 1 from 'class CString' to 'const char *'
            No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
      

  2.   

    CString strtmp=_T("1");
    int nPort;
    swscanf(strtmp, _T("%d"), &nPort);
      

  3.   

    转换咯...
    CString s;
    char *str= (LPSTR)(LPCTSTR)s;
    VC下其实有时候也会报错的.
    (LPSTR)(LPCTSTR)s;
      

  4.   

    CString strtmp=_T("1");
    int nPort;
    swscanf(strtmp, _T("%d"), &nPort);
    ----------------------------------------------
    这个是不好用的,我已经试过了
      

  5.   

    嗯,楼上的方法是好用的,不好意思,之前看错了,又出新问题了
    error C2664: 'Connection' : cannot convert parameter 1 from 'class CString' to 'const char *'与上一问题在同一个函数中的CString host;while(!m_bConnected)
    {
        m_bConnected = m_wstr.Connect(host,nPort);//此处有毛病
    }Connect函数的原型Connect(LPCSTR pstrHost, int nPort)
      

  6.   

    while(!m_bConnected)
    {
        m_bConnected = m_wstr.Connect((LPCSTR)(LPCTSTR)host,nPort);//此处有毛病
    }
    试试看。
      

  7.   

    嘿嘿,本人已搞定,错误已经没了,就是不知道对不对m_bConnected = m_wstr.Connect((LPSTR)(LPCTSTR)host, nPort);大家看看,说说原因
      

  8.   

    把你的工程从unicode改为多字节,unicode工程,CString只能转换为const wchar_t*,或者你把CString换成CStringA,就没问题了。
      

  9.   

    Connect函数的原型是Connect(LPCSTR pstrHost, int nPort)的话,你又必须要用unicode,那只能在这里采用CStringA了。
    相应的unicode和多字节之间的转换,你自己要做好。
    另外你的Connect到底是什么啊?像是CSocket::Connect,如果真是这样的话,应该是不需要这么麻烦的阿,因为他的第一个参数是LPCTSTR阿。
      

  10.   

    BOOL CWSocket::Connect(LPCSTR pstrHost, int nPort)这个原型,
    我改后就是现在这个了
    如果要是用以前,那应该怎么弄,而且它是LPCSTR,不是LPCTSTR
      

  11.   

    CWSocket是从CSocket继承的吗?
    如果是的话,把CWSocket这个类里面Connect的实现再仔细看看,如果把unicode和非unicode搞混了,你网络肯定连不起来的。
      

  12.   

    不是,这个类是直接从网上DOWN的,这个网上就有的,已经有点晕了,转来转去的
      

  13.   

    怪不得,你稍微把它改改,适应一下你的unicode工程吧,不然会出问题
      

  14.   

    _stscanf((LPTSTR)strtmp, "%d", &nPort);
      

  15.   

    _stscanf((LPTSTR)strtmp, _T("%d"), &nPort);