|
在wince开发程序遇到了问题,个人判断应该是unicode 编码问题
[复制链接]
在wince开发程序遇到了问题,个人判断应该是unicode 编码问题,比如有如下问题;
CString a("$ABCDE");
个人认为a.left(6)应该是="$ABCDE",结果返回值是"$",难道CString 不支持unicode?,left函数参数不应该是字符数量吗?
另外希望本人自己写的拆分字符串的函数不能正确执行,在Windows上完全正常,请指导一下如何修改。源码如下:
#include
#include
#include
#include
#include
using namespace std;
//用查找二进制串方式分割字符串,成功返回位置信息,失败返回-1
int GetBinDataPos(char * strSrcString,int iSumMemSize,const char *strSep,int iElmentSize,int iStartPos)
{
int iElmentData;
int iCompData;
memcpy(&iCompData,strSep,iElmentSize);
for (int i=iStartPos;i<=iSumMemSize;i++)
{
memcpy(&iElmentData,strSrcString+i,iElmentSize);
if (iElmentData==iCompData)
{
return i;
}
}
return -1;
}
//参数1:要进行分割的字符串;参数2:要进行分割的字符串长度,单位字节;参数3:分隔符字符串;参数4:分隔符长度,单位字节;
//参数5:字符串数组,引用方式传递;返回值,分割后的数组中元素个数
int SplitStrBin(char * strSrcString,int iSumDataSize,char *strSep,int iSepSize,vector *v_p)
{
string StrResult;
char buffer[128];
int iStartPos=1;//搜索起始位置
int iSepPos=-1;//分隔符位置
iSepPos=GetBinDataPos(strSrcString,iSumDataSize,strSep,iSepSize,iStartPos);
if (iSepPos==-1)
return 0;
while(iSepPos>0)//找到分隔符
{
memset(buffer,0,128);
if (iStartPos==1)
memcpy(buffer,strSrcString+iStartPos-1,iSepPos-iStartPos+1);
else
memcpy(buffer,strSrcString+iStartPos,iSepPos-iStartPos);
StrResult=buffer;
v_p->push_back(StrResult);
iStartPos=iSepPos+iSepSize;
iSepPos=GetBinDataPos(strSrcString,iSumDataSize,strSep,iSepSize,iStartPos);
}
memset(buffer,0,128);
if (iSumDataSize-iStartPos>128)
memcpy(buffer,strSrcString+iStartPos,128);
else
memcpy(buffer,strSrcString+iStartPos,iSumDataSize-iStartPos);
if (buffer[0]!=0)
{
StrResult=buffer;
//v_String.push_back(StrResult);
v_p->push_back(StrResult);
}
return v_p->size();
}
|
|