3304|6

64

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

在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();
}

最新回复

学习一下~ 没有遇到这样的情况   详情 回复 发表于 2008-9-20 16:18
点赞 关注

回复
举报

57

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
学习中
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
CString a(TEXT("$ABCDE"));
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

4
 
你确认你的project定义了UNICODE了没有?
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 2 楼 91program 的回复:
CString a(TEXT("$ABCDE"));

正解
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

6
 
CString a("$ABCDE");
变为CString a(_T("$ABCDE"));或者CString a(L"$ABCDE");  
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

7
 
学习一下~ 没有遇到这样的情况
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表