代码(一)
void CtestEx::Tokenize(const CString& csToken_i,
                           WCHAR* pwcDelimit_i,
                           CStringArray& csarData_o)
{
    ... ...
    int nSize = csToken_i.GetLength() + 1;
    LPWSTR pwcToken = new WCHAR[nSize];
    wcscpy(pwcToken, csToken_i);
    ... ...
}代码(二)
#define SEPERATOR_STRING _T( "$" )
CString csValues_i
CStringArray csarValues;... ...Tokenize(csValues_i,SEPERATOR_STRING,csarValues );'Tokenize' : cannot convert parameter 2 from 'char [2]' to 'unsigned short *'
'wcscpy' : cannot convert parameter 2 from 'const class CString' to 'const unsigned short *' 结果编译时出现报错,请教一下,应该如何修改?

解决方案 »

  1.   

    WCHAR和char是不一样的,SEPERATOR_STRING的定义必须改
    同样CString也要改
      

  2.   

    你有没有定义UNICODE宏,
    看样子没有,SEPERATOR_STRING是'char [2]',
    而okenize函数希望第二个参数是wchar_t*类型;显然不匹配;
      

  3.   

    因为你的代码不能自适应Unicode编译和非Unicode编译,原因是你使用了wcscpy,这个函数只认宽字符(unicode编译方式),你应该把wcscpy改成tcscpy,把所有的带W的都换成带T的,否则,你只有去修改编译选项,定义UNICODE了
      

  4.   

    改成tcscpy,好像不行
    还有别的方法吗,给个例子
      

  5.   

    函数名前面还有一个下划线_tcscpy
      

  6.   

    我的程序里只有这一处用到wcscpy(pwcToken, csToken_i); 
      

  7.   

    改为_tcscpy后 
    cannot convert parameter 1 from 'unsigned short *' to 'char *'
      

  8.   

    你没有定义_UNICODE,所以你的项目默认是MultiByte的字符串,CString对应的也是MultiByte。
    在stdafx.h的最上面加入
    #define _UNICODE
    #define UNICODE
      

  9.   

    可以尝试用
    MultiByteToWChar函数将MultiByte的字符串转换成宽字符串(char->unsign short)
      

  10.   

    试试把unsinged short类型的数据取出来,比如ungsing short *pShort,char *pChar;pChar=&(*pShort)
      

  11.   

    能不能修改这一句,wcscpy(pwcToken, csToken_i); 用别的替代一下。