我建了一个函数int LaddY::cht(const char a[],int size)
调用这个函数a=cht((LPCTSTR)m_data,m_data.GetLength())
其中m_data为CString型,
运行时报错:1>e:\\laddy.cpp(103) : error C2664: 'LaddY::cht' : cannot convert parameter 1 from 'LPCTSTR' to 'const char []'
请问怎么修改

解决方案 »

  1.   

    int LaddY::cht(const char *a,int size) a=cht((LPCTSTR)m_data,m_data.GetLength())
      

  2.   

    用TCHAR代替char。
    int LaddY::cht(const TCHAR a[],int size)
    函数里面根据需要修改。
      

  3.   

    1楼的别误导明明就是unicode和ansi字符集之间的问题。要么照LS的改,要么就把工程的使用字符集改为多字节字符集
      

  4.   

    #ifdef _UNICODE
    char *pmb = new char[MB_CUR_MAX];
    int i = wctomb(pmb, (WCHAR)m_data);
    a = LaddY::cht(pmb, i);
    delete[] pmb;#else
    a = LaddY::cht(m_data, m_data.GetLength());
    #endif
      

  5.   

    可以用a=cht(m_data.GetBuffer(),m_data.GetLength()) ,函数据名好像是GetBuffer吧,不太确定,确实能用的。有个参数,不给的话默认是0,返回的指针是char *类型,指向字符串第0个字节的地址,
      

  6.   

    能不能讲一下原因?
    我找到的MSDN:
    A WCHAR if UNICODE is defined, a CHAR otherwise. 
    This type is declared in WinNT.h as follows:
    #ifdef UNICODE
     typedef WCHAR TCHAR;
    #else
     typedef char TCHAR;
    #endif