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("")){ //先判断是不是对象,如果是,再判断是不是空字符串
//...
}