欢迎来到天天文库
浏览记录
ID:40239565
大小:741.50 KB
页数:47页
时间:2019-07-28
《Visual C++应用教程 郑阿奇 丁有和 第6章数据和文档》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6章数据和文档6.1CString类6.2使用简单数组集合类6.3使用CFile类6.4文档序列化6.5综合应用6.1CString类6.1.1BSTR、constchar*、LPCTSTR和CString什么是BSTR、LPSTR以及LPWSTR呢?BSTR(BasicSTRing,Basic字符串)是一个OLECHAR*类型的Unicode字符串。它被描述成一个与自动化相兼容的类型。由于操作系统提供相应的API函数(如SysAllocString)来管理它以及一些默认的调度代码,因此BSTR实际上就是一个COM字符串,但它却在自动化技术以外的多种场合下也得到了较
2、为广泛的使用。LPSTR和LPWSTR是Win32和VisualC++所使用的一种字符串数据类型。LPSTR被定义成是一个指向以NULL(‘ ’)结尾的8位ANSI字符数组指针,而LPWSTR是一个指向以NULL结尾的16位双字节字符数组指针。在VisualC++中,还有类似的字符串类型,如LPTSTR、LPCTSTR等,它们的含义如图6.1所示。LP[C][W
3、T]STRLongpointertoaStringConstant(ANSI)
4、Unicode
5、Geniric图6.1字符串类型表示的含义6.1CString类例如,LPCTSTR是指“longpointe
6、rtoaconstantgenericstring”,表示“一个指向一般字符串常量的长指针类型”,与C/C++的constchar*相映射,而LPTSTR映射为char*。一般地,VisualC++中还有下列类型定义:#ifdefUNICODEtypedefLPWSTRLPTSTR;typedefLPCWSTRLPCTSTR;#elsetypedefLPSTRLPTSTR;typedefLPCSTRLPCTSTR;#endif6.1CString类CString类支持字符串类型,并可通过CString类构造函数和一些运算符进行构造。CString类构造函数原型如下:C
7、String();CString(constCString&stringSrc);CString(TCHARch,intnRepeat=1);CString(LPCTSTRlpch,intnLength);CString(constunsignedchar*psz);CString(LPCWSTRlpsz);CString(LPCSTRlpsz);例如:CStrings1;//创建一个空字符串CStrings2("cat");//从C语言样式的字符串来创建s2CStrings3=s2;//使用拷贝构造函数,将s2作为s3的初值CStrings4(s2+""+s3);/
8、/从一个字符串表达式来创建s4CStrings5('x');//使s5="x"CStrings6('x',6);//使s6="xxxxxx"CStrings7((LPCSTR)ID_FILE_NEW);//从资源ID_FILE_NEW的字符串值创建s7//等同于://CStrings7 ;//s7.LoadString(ID_FILE_NEW) ;CStringcity="Philadelphia";//从C语言样式的字符串来创建city6.1CString类当然,也可使用CString类的Format成员函数将任意数据类型转换成CString字符串。Format成员
9、函数使用C语言的printf的格式样式进行创建,例如:CStringstr;str.Format("Floatingpoint:%.2f",12345.12345);str.Format("Left-justifiedinteger:%.6d",35);若将一个CString字符串向上述字符串类型进行转换,则可使用CString类提供了的constchar*、LPCTSTR运算符以及AllocSysString和SetSysString成员函数等。例如://将CString向LPTSTR转换的方法一CStringtheString("Thisisatest")
10、;LPTSTRlpsz=newTCHAR[theString.GetLength()+1];//TCHAR在Unicode平台中等同于WCHAR(16位Unicode字符),在ANSI中等价于char。_tcscpy(lpsz,theString);//将CString向LPTSTR转换的方法二CStringtheString("Thisisatest");LPTSTRlpsz=(LPTSTR)(LPCTSTR)theString;//将CString向BSTR转换CStringstr("Thisisatest");BSTRbstrText=str.
此文档下载收益归作者所有