字符串解析--截断字符与内存分配

来源:互联网 发布:映射nas网络驱动器 编辑:程序博客网 时间:2024/05/01 20:53

1. 字符串的截断:

//截断str字符,长度为nMaxLen,strOut输出实际截断的字符

char* InterceptLenth(CString& str,int nMaxLen,CString& strOut)

{  

int i= 0;  

int last = 0;  

char *s = str.GetBuffer(str.GetLength());  

char *pre = s;

char *next;

while(i<nMaxLen)  

{  

next = (char*)CharNext(s);    //保存下一个字符      

int n = strlen(pre)-strlen(next);  //获取这个字符所占用的字节长度

CString str1;  

str1= str.Mid(last,n);  //取得字符(一个字)

strOut += str1;  //累加到strOut

last += n;  

s+=n;  

pre = next;  

i++;  

return next;

}

2. 文本的剪切:

CString str = "我是一个兵我来字asdf国名";
CString strDelete = "来字";
int index = str.Find(strDelete);//获取子串的位置,从开始查找.
str.Delete(index, strDelete.GetAllocLength());//删除子串
MessageBox( str );

另外,在编程的时候,经常使用NULL和_T("").但不是每个人都理解他们的真正含义的.

string str1 = NULL; str引用为空 

string str2 = ""; str应用一个空串 

//  也就是null没有分配空间,""分配了空间,因此str1还不是一个实例化的对象,儿str2已经实例化。 

// 

//  注意因为null不是对象,""是对象。所以比较的时候必须是 if(str1==null){....}if(str2.equals("")){} 

// 

//  对象用equals比较,null用等号比较。因此,如果str1=null;下面的写法错误: 

if( str1.equals("")||str1==null){//如果str1没有值,则.... 

//。。。。 

//正确的写法是 

if(str1==null||str1.equals("")){ //先判断是不是对象,如果是,再判断是不是空字符串 

//... 

原创粉丝点击