第6章数据和文档

上传人:无*** 文档编号:243952695 上传时间:2024-10-01 格式:PPT 页数:46 大小:370KB
返回 下载 相关 举报
第6章数据和文档_第1页
第1页 / 共46页
第6章数据和文档_第2页
第2页 / 共46页
第6章数据和文档_第3页
第3页 / 共46页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,第,6,章数据和文档,6.1CString,类,6.2,使用简单数组集合类,6.3,使用,CFile,类,6.4,文档序列化,6.5,综合应用,6.1CString,类,6.1.1 BSTR,、,const char*,、,LPCTSTR,和,CString,什么是,BSTR,、,LPSTR,以及,LPWSTR,呢?,BSTR,(,B,asic,STR,ing,,,Basic,字符串)是一个,OLE CHAR*,类型的,Unicode,字符串。它被描述成一个与自动化相兼容的类型。由于操作系统提供相应的,API,函数(如,SysAllocString,)来管理它以及一些默认的调度代码,因此,BSTR,实际上就是一个,COM,字符串,但它却在自动化技术以外的多种场合下也得到了较为广泛的使用。,LPSTR,和,LPWSTR,是,Win32,和,Visual C+,所使用的一种字符串数据类型。,LPSTR,被定义成是一个指向以,NULL,(,0,)结尾的,8,位,ANSI,字符数组指针,而,LPWSTR,是一个指向以,NULL,结尾的,16,位双字节字符数组指针。在,Visual C+,中,还有类似的字符串类型,如,LPTSTR,、,LPCTSTR,等,它们的含义如图,6.1,所示。,LPCW|TSTR,Long pointer to a,String,Constant,(,ANSI)|Unicode|Geniric,图,6.1,字符串类型表示的含义,6.1CString,类,例如,,LPCTSTR,是指“,long pointer to a constant generic string”,,表示“一个指向一般字符串常量的长指针类型”,与,C/C+,的,const char*,相映射,而,LPTSTR,映射为,char*,。,一般地,,Visual C+,中还有下列类型定义:,#ifdef,UNICODE,typedef,LPWSTR,LPTSTR,;,typedef,LPCWSTR,LPCTSTR,;,#else,typedef,LPSTR,LPTSTR,;,typedef,LPCSTR,LPCTSTR,;,#endif,6.1CString,类,CString,类支持字符串类型,并可通过,CString,类构造函数和一些运算符进行构造。,CString,类构造函数原型如下:,CString();,CString(const CString&,stringSrc,);,CString(TCHAR,ch,int,nRepeat=,1);,CString(LPCTSTR,lpch,int,nLength,);,CString(const unsigned char*,psz,);,CString(LPCWSTR,lpsz,);,CString(LPCSTR,lpsz,);,例如:,CString s1;/,创建一个空字符串,CString s2(cat);/,从,C,语言样式的字符串来创建,s2,CString s3=s2;/,使用拷贝构造函数,将,s2,作为,s3,的初值,CString s4(s2+s3);/,从一个字符串表达式来创建,s4,CString s5(x);/,使,s5=x,CString s6(x,6);/,使,s6=xxxxxx,CString s7(LPCSTR)ID_FILE_NEW);/,从资源,ID_FILE_NEW,的字符串值创建,s7,/,等同于:,/CString s7;,/s7.LoadString(ID_FILE_NEW);,CString city=Philadelphia;/,从,C,语言样式的字符串来创建,city,6.1CString,类,当然,也可使用,CString,类的,Format,成员函数将任意数据类型转换成,CString,字符串。,Format,成员函数使用,C,语言的,printf,的格式样式进行创建,例如:,CString str;,str.Format(Floating point:%.2fn,12345.12345);,str.Format(Left-justified integer:%.6dn,35);,若将一个,CString,字符串向上述字符串类型进行转换,则可使用,CString,类提供了的,const char*,、,LPCTSTR,运算符以及,AllocSysString,和,SetSysString,成员函数等。例如:,/,将,CString,向,LPTSTR,转换的方法一,CString theString(This is a test);,LPTSTR lpsz=new TCHARtheString.GetLength()+1;,/TCHAR,在,Unicode,平台中等同于,WCHAR(16,位,Unicode,字符,),,在,ANSI,中等价于,char,。,_tcscpy(lpsz,theString);,/,将,CString,向,LPTSTR,转换的方法二,CString theString(This is a test);,LPTSTR lpsz=(LPTSTR)(LPCTSTR)theString;,/,将,CString,向,BSTR,转换,CString str(This is a test);,BSTR bstrText=str.AllocSysString();,SysFreeString(bstrText);/,用完释放,6.1CString,类,6.1.2,字符串的字符访问,在,CString,类中,可以用,SetAt,和,GetAt,来设置或获取指定字符串中的字符,也可以使用运算符“,”,来直接操作。它们的函数原型描述如下:,void SetAt(int,nIndex,TCHAR,ch,);,其中,参数,nIndex,用来指,CString,对象中的某个字符的索引(从零开始),它的值必须大于或等于,0,,且应小于由,GetLength,的返回的值。,ch,用来指定要插入的字符。这样,就可将一个,CString,对象看作是一个字符数组,,SetAt,成员函数用来改写指定索引的字符。,TCHAR GetAt(int,nIndex,)const;,该函数用来返回由,nIndex,指定索引位置(从零开始)的,TCHAR,字符。例如:,CString str(abcdef);,ASSERT(str.GetAt(2)=c);,/,断言返回的字符与,c,相等。在,MFC,中,断言机制常用于调试,当断言失败后,程序在此中断,,/,然后弹出对话框,询问是否进入调试或选择其他操作,TCHAR operator(int nIndex)const;,这是一个运算符重载函数,即将一个,CString,对象看作是一个字符数组,使用下标运行符“,”,,通过指定下标值,nIndex,来获取相应的字符。例如:,CString str(abc);,ASSERT(str1=b);,6.1CString,类,6.1.3,清空及字符串长度,清空,CString,对象可用,Empty,函数,判断,CString,对象是否为空用函数,IsEmpty,,获取,CString,对象的字符串长度用函数,GetLength,,它们的原型如下:,void Empty();,该函数强迫,CString,对象为空(字符串长度为,0,)并释放相应的内存。,BOOL IsEmpty()const;,该函数用来判断,CString,对象是否为空(字符串长度为,0,),“是”为,TRUE,,“否”为,FALSE,。,int GetLength()const;,该函数用来获取,CString,对象的字符串长度(字符个数),这个长度不包括字符串结尾的结束符。例如:,CString s(abcdef);,ASSERT(s.GetLength()=6);,6.1.4,提取和大小写转换,CString,类提供许多用来从一个字符串中提取部分字符串的操作函数,也提供了大小写转换函数。下面分别说明。,CString Left(int,nCount,)const;,该函数用来从,CString,对象中提取最前面的,nCount,个字符作为要提取的子字符串(简称,子串,)。如果,nCount,超过了字符串的长度,则整个字符串都被抽取。,CString Mid(int,nFirst,)const;,CString Mid(int,nFirst,int,nCount,)const;,6.1CString,类,该函数函数用从,CString,对象中提取一个从,nFirst,(从零开始的索引)指定的位置开始的,nCount,个字符的子串。若,nCount,不指定,则提取的子串是从,nFirst,开始直到字符串结束。,CString Right(int,nCount,)const;,该函数用来从,CString,对象中提取最后面的,nCount,个字符作为要提取的子字符串。如果,nCount,超过了字符串的长度,则整个字符串都被抽取。,void MakeLower();,该函数用来将,CString,对象的所有字符转换成小写字符。,void MakeUpper();,该函数用来将,CString,对象的所有字符转换成大写字符。,void TrimLeft();,void CString:TrimLeft(TCHAR,chTarget,);,void CString:TrimLeft(LPCTSTR,lpszTargets,);,该函数用来将,CString,对象最左边的空格、空格和,tab,字符或,chTarget,指定的字符或,lpszTargets,指定的子串删除。,void TrimRight();,void CString:TrimRight(TCHAR,chTarget,);,void CString:TrimRight(LPCTSTR,lpszTargets,);,6.1CString,类,该函数用来将,CString,对象最后边的空格、空格和,tab,字符或,chTarget,指定的字符或,lpszTargets,指定的子串删除。,例如:,CString strBefore;,CString strAfter;,strBefore=Hockey is Best!;,strAfter=strBefore;,strAfter.TrimRight(!);,/strAfter,中的字符串“,Hockey is Best!”,变成了“,Hockey is Best”,strBefore=Hockey is Best?!?!?!?!;,strAfter=strBefore;,strAfter.TrimRight(?!?);,/strAfter,中的字符串“,Hockey is Best?!?!?!?!”,变成了“,Hockey is Best”,6.2,使用简单数组集合类,1.,简单数组集合类的构造及元素的添加,对简单数组集合类构造的方法都是一样的,均是使用各自的构造函数,它们的原型如下:,CByteArray,CByteArray,();,CDWordArray,CDWordArray,();,CObArray,CObArray,();,CPtrArray,CPtrArray,();,CStringArray,CStringArray,();,CUIntArray,CUIntArray,();,CWordArray,CWordArray,();,下面的代码说明了简单数组集合类的两种构造方法:,CObArray,array;/,使用默认的内存块大小,CObArray,*,pArray,=new,CObArray,;/,使用堆内存中的默认的内存块大小,为了有效使用内存,在使用简单数组集合类之前最好调用成员
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!