CString类所有成员函数详解

合集下载

CString的成员函数详解

CString的成员函数详解

CString的成员函数详解typedef ATL::CStringT< TCHAR, StrTraitMFC_DLL< TCHAR > > CString;CString的构造函数:1 CString( );2 CString( const CString& stringSrc );3 CString( TCHAR ch, int nRepeat = 1 );4 CString( LPCTSTR lpch, int nLength );5 CString( const unsigned char* psz );6 CString( LPCWSTR lpsz );7 CString( LPCSTR lpsz );CString 成员函数详解:1.CString 的构造函数:// 缺省构造函数CString()例:CString csStr;// 复制构造函数CString(const CString& stringSrc)例:CString csStr("ABCDEF 中⽂ 123456");CString csStr2(csStr);// ⽤字符初始化CString(TCHAR ch, int nRepeat = 1)例:CString csStr('a', 5); // csStr = "aaaaa"// ⽤字符串前⼏个字符初始化CString(LPCTSTR lpch, int nLength)例:CString csStr("abcdef", 3); // csStr = "abc"// ⽤宽字符串初始化CString(LPCWSTR lpsz)例:wchar_t s[] = L"abcdef";CString csStr(s); // csStr = L"abcdef"// ⽤字符串初始化CString(LPCSTR lpsz)例:CString csStr("abcdef"); // csStr = "abcdef"// ⽤字符串初始化CString(const unsigned char * psz)例:const unsigned char s[] = "abcdef";const unsigned char *sp = s;CString csStr(sp); // csStr = "abcdef"2.CString 的成员函数:int GetLength( ) const;返回字符串的长度,不包含结尾的空字符。

MFC中Format函数最全用法

MFC中Format函数最全用法

函数说明Format是CString类的一个成员函数,它通过格式操作使任意类型的数据转换成一个字符串。

函数声明function Format(const Format: string; const Args: array of const): string; overload;函数功能事实上Format方法有两种形式,另外一种是三个参数的,主要区别在于它是线程安全的,但并不多用,所以这里只对第一个介绍。

Format参数是一个格式字符串,用于格式化Args里面的值的。

Args是一个变量数组,即它里面可以有多个参数,而且每个参数可以不同。

例如:Format("my name is %6s","wind");返回的是:my name is wind函数参数Format里面可以写普通的字符串,比如"my name is" ,但有些格式指令字符具有特殊意义,比如"%6s"格式指令具有以下的形式: "%" [index ":"] ["-"] [width] ["." prec] type它是以"%"开始,而以type结束,type表示一个具体的类型。

中间是用来格式化type类型的指令字符,是可选的。

各个参数的含义与用途如下;[type]type参数可选的类型有d,u,f,e,g,n,m,p,s,x.1) d 十进制数,表示一个整型值,u 和d一样是整型值,但它是无符号的,而如果它对应的值是负的,则返回时是一个2的32次方减去这个负数的绝对值。

例如:Format("this is %u",-2);返回的是:this is 42949672942)f 对应浮点数3)e科学表示法,对应整型数和浮点数例如:Format("this is %e",-2.22);返回的是:this is -2.220000E+0004)g 这个只能对应浮点型,且它会将值中多余的数去掉例如:Format("this is %g",02.200);返回的是:this is 2.25)n 只能对应浮点型,将值转化为号码的形式,看一个例子就明白了例如:Format("this is %n",4552.2176);返回的是:this is 4,552.22注意:一是,只表示到小数后两位二是,即使小数没有被截断,它也不会也像整数部分一样有逗号来分开的6)m 钱币类型,但关于货币类型有更好的格式化方法,这里只是简单的格式化,另外它只对应于浮点值例如:Format("this is %m",9552.21);返回的是:this is ¥9,552.217)p 对应于指针类型,返回的值是指针的地址,以十六进制的形式来表示例如:Format("this is %p",p);返回的是:this is 0012F5488)s 对应字符串类型9)x 必须是一个整形值,以十六进制的形式返回例如:Format("this is %X",15);返回的是:this is F下面介绍格式化Type的指令:[index ":"] :index指示Args中参数显示的顺序。

CString字符串操作函数汇总

CString字符串操作函数汇总

int ReverseFind( TCHAR ch ) const;
从后向前查找第一个匹配,找到时返回下标。没找到时返回-1
例:csStr="abba";
cout<<csStr.ReverseFind('a'); //3
void Format( LPCTSTR lpszFormat, ... );
void MakeLower( );
将大写字母转换为小写字母
例:csStr="ABCDEF中文123456";
csStr.MakeLower();
cout<<csStr; //abcdef中文123456
int Compare( LPCTSTR lpsz ) const;
cout<<csStr.Find('b',0); //1
cout<<csStr.Find("de",4); //-1
cout<<csStr.Find("de",0); //3
//当nStart超出对象末尾时,返回-1。
//当nStart为负数时,返回-1。
CString SpanExcluding( LPCTSTR lpszCharSet ) const;
返回对象中与lpszCharSet中任意匹配的第一个字符之前的子串
例:csStr="abcdef";
cout<<csStr.SpanExcluding("cf"); //ab
csStr.TrimLeft("ab");

mfc getbuffer函数

mfc getbuffer函数

mfc getbuffer函数MFC GetBuffer函数:解析和使用在MFC(Microsoft Foundation Classes)中,GetBuffer函数是一个常用的函数之一。

它主要用于获取指向字符数组的指针,以便在MFC应用程序中对字符串进行操作。

本文将详细介绍GetBuffer 函数的用法和常见应用场景。

一、GetBuffer函数的基本用法GetBuffer函数是CString类的成员函数,在CString类中定义如下:LPTSTR GetBuffer(int nMinBufLength) const;该函数的参数nMinBufLength表示所需的最小缓冲区长度。

GetBuffer函数的返回值为指向字符数组的指针。

使用GetBuffer函数的一般步骤如下:1. 创建一个CString对象并初始化。

2. 调用GetBuffer函数获取指向字符数组的指针。

3. 对字符数组进行操作。

4. 调用ReleaseBuffer函数释放字符数组。

下面以一个简单的示例来说明GetBuffer函数的基本用法:```CString str("Hello, World!");LPTSTR pBuffer = str.GetBuffer(20);// 对字符数组进行操作str.ReleaseBuffer();```在上述示例中,首先创建了一个CString对象str并初始化为"Hello, World!"。

然后调用GetBuffer函数并指定最小缓冲区长度为20,获取指向字符数组的指针pBuffer。

接下来可以对字符数组进行操作,比如修改其中的字符或进行其他操作。

最后调用ReleaseBuffer函数释放字符数组。

二、GetBuffer函数的常见应用场景1. 字符串拼接GetBuffer函数可以用于方便地进行字符串拼接操作。

例如,当需要将多个字符串拼接成一个较长的字符串时,可以使用GetBuffer 函数获取指向字符数组的指针,并使用字符串操作函数对字符数组进行拼接。

VS2010和MFC编程入门之42(MFC常用类:CString类)

VS2010和MFC编程入门之42(MFC常用类:CString类)

VS2010MFC编程入门之四十二(MFC常用类:CString类)理解了分割窗口的有关知识,这里开始讲解MFC的一些常用类,先来说说CString类。

CString类简介CString类作为MFC的常用类,当之无愧。

可以这样说,只要是从事MFC开发,基本都会遇到使用CString类的场合。

因为字符串的使用比较普遍,而CString类又提供了对字符串的便捷操作,所以它给MFC开发人员带来了高的开发效率,受到了开发者的欢迎。

大家使用VS2010的话,可能会见到CStringT,实际上它是一个操作可变长度字符串的模板类。

CStringT模板类有三个实例:CString、CStringA和CStringW,它们分别提供对TCHAR、char和wchar_t字符类型的字符串的操作。

char类型定义的是Ansi字符,wchar_t类型定义的是Unicode字符,而TCHAR取决于MFC工程的属性对话框中的Configuration Properties->General->Character Set属性,如果此属性为Use Multi-Byte Character Set,则TCHAR类型定义的是Ansi字符,而如果为Use Unicode Character Set,则TCHAR类型定义的是Unicode字符。

三个字符串类的操作是一样的,只是处理的字符类型不同。

鸡啄米以CString类为讲解对象。

CString类的字符串操作1. CString类的构造函数CString类有很多构造函数,这里只介绍几个比较常用的:CString(constCString&stringSrc);将一个已经存在的CString对象stringSrc的内容拷贝到该CString对象。

例如:C++代码CString str1(_T("")); // 将常量字符串拷贝到str1 CString str2(str1); // 将str1的内容拷贝到str2CString(LPCTSTR lpch, intnLength);将字符串lpch中的前nLength个字符拷贝到该CString对象。

VC++ CString详解

VC++  CString详解

1、CString 对象的连接:用”+”2、格式化字符串:用CString 对象的Format()方法。

用这种方法的好处是你不用担心用来存放格式化后数据的缓冲区是否足够大,这些工作由CString类替你完成。

格式化是一种把其它不是字符串类型的数据转化为CString类型的最常用技巧。

*****CString s; s.Format(_T("%d"), total);我总是对我的字符串使用_T()宏,这是为了让我的代码至少有Unicode的意识#define _T(x) x // 非Unicode版本(non-Unicode version)而在Unicode环境下是如下定义的:#define _T(x) L##x // Unicode版本(Unicode version)所以在Unicode环境下,它的效果就相当于:s.Format(L"%d", total);如果你认为你的程序可能在Unicode的环境下运行,那么开始在意用Unicode 编码。

比如说,不要用sizeof() 操作符来获得字符串的长度,因为在Unicode环境下就会有2倍的误差。

我们可以用一些方法来隐藏Unicode的一些细节,比如在我需要获得字符长度的时候,我会用一个叫做DIM的宏,这个宏是在我的dim.h文件中定义的,我会在我写的所有程序中都包含这个文件:#define DIM(x) ( sizeof((x)) / sizeof((x)[0]) )这个宏不仅可以用来解决Unicode的字符串长度的问题,也可以用在编译时定义的表格上,它可以获得表格的项数,如下:class Whatever { ... };Whatever data[] = {{ ... },...{ ... },};for(int i = 0; i < DIM(data); i++) // 扫描表格寻找匹配项。

CString

CString

CStringCString没有基类。

一个CString对象由可变长度的一队字符组成。

CString使用类似于Basic的语法提供函数和操作符。

连接和比较操作符以及简化的内存管理使CString对象比普通字符串数组容易使用。

CString是基于TCHAR数据类型的对象。

如果在你的程序中定义了符号_UNICODE,则TCHAR被定义为类型wchar_t,即16位字符类型;否则,TCHAR被定义为char,即8位字符类型。

在UNICODE方式下,CString对象由16位字符组成。

非UNICODE方式下,CString对象由8位字符组成。

当不使用_UNICODE时,CString是多字节字符集(MBCS,也被认为是双字节字符集,DBCS)。

注意,对于MBCS 字符串,CString仍然基于8位字符来计算,返回,以及处理字符串,并且你的应用程序必须自己解释MBCS的开始和结束字节。

CString对象还具有下列特征:·CString可作为连接操作的结果而增大。

·CString对象遵循“值语义”。

应将CString看作是一个真实的字符串而不是指向字符串的指针。

·你可以使用CString对象任意替换const char*和LPCTSTR函数参数。

·转换操作符使得直接访问该字符串的字符就像访问一个只读字符(C-风格的字符)数组一样。

提示:如果可能的话,应在框架中而不是堆中分配这个CString对象。

这可以节省内存并简化参数的传递。

CString允许两个具有相同值的字符串共享相同的缓冲空间,这有助于你节省内存空间。

但是,如果你初始直接改变该缓冲的内容(不使用MFC),则有可能在无意中改变了两个字符串。

CString提供了两个成员函数CString::LockBuffer 和CString::UnlockBuffer来帮助你保护你的数据。

当你调用LockBuffer时,你就创建了一个字符串的一个拷贝,然后将引用计数设置为-1,这就“加锁”了该缓冲区。

Cstring字符串比较方法详解

Cstring字符串比较方法详解

Cstring字符串比较方法详解字符串可以和类型相同的字符串相比较,也可以和具有同样字符类型的数组比较。

Basic_string 类模板既提供了 >、<、==、>=、<=、!= 等比较运算符,还提供了 compare() 函数,其中 compare() 函数支持多参数处理,支持用索引值和长度定位子串进行比较。

该函数返回一个整数来表示比较结果。

如果相比较的两个子串相同,compare() 函数返回0,否则返回非零值。

compare()函数类 basic_string 的成员函数 compare() 的原型如下:int compare (const basic_string& s) const;int compare (const Ch* p) const;int compare (size_type pos, size_type n, const basic_string& s) const;int compare (size_type pos, size_type n, const basic_string& s,size_type pos2, size_type n2) const;int compare (size_type pos, size_type n, const Ch* p, size_type = npos) const;如果在使用compare() 函数时,参数中出现了位置和大小,比较时只能用指定的子串。

例如:pare {pos,n, s2);若参与比较的两个串值相同,则函数返回0;若字符串S 按字典顺序要先于S2,则返回负值;反之,则返回正值。

下面举例说明如何使用 string 类的 compare() 函数。

【例 1】复制纯文本复制1.#include <iostream>2.#include <string>3.u sin g namespace std;4.int main ()5.{6.string A ('aBcdef');7.string B ('AbcdEf');8.string C ('123456');9.string D ('123dfg');10.//下面是各种比较方法11.int m=pare (B); //完整的A和B的比较12.int n=pare(1,5,B,4,2); //'Bcdef'和'AbcdEf'比较13.int p=pare(1,5,B,4,2); //'Bcdef'和'Ef'比较14.int q=pare(0,3,D,0,3); //'123'和'123'比较15.cout << 'm = ' << m << ', n = ' << n <<', p = ' << p << ', q = ' << q << endl;16.cin.get();17.return 0;18.}#include <iostream> #include <string> u sin g namespace std; int main () { string A ('aBcdef'); string B ('AbcdEf'); string C ('123456'); string D ('123dfg'); //下面是各种比较方法int m=pare (B); //完整的A和B的比较int n=pare(1,5,B,4,2); //'Bcdef'和'AbcdEf'比较int p=pare(1,5,B,4,2); //'Bcdef'和'Ef'比较int q=pare(0,3,D,0,3); //'123'和'123'比较 cout << 'm = ' << m << ', n = ' << n <<', p = ' << p << ', q = ' << q << endl; cin.get(); return 0; }程序的执行结果为:m = 1, n = -1, p = -1, q = 0由此可知,string 类的比较 compare() 函数使用非常方便,而且能区分字母的大小写。

MFC常用的类及其成员函数简介

MFC常用的类及其成员函数简介

MFC常用类及其成员函数CRuntimeClass结构在CRuntimeClass结构中定义了类名、对象所占存储空间的大小、类的版本号等成员变量及动态创建对象、派生关系判断等成员函数。

每一个从CObject 类派生的类都有一个CRuntimeClass结构同它关联,以便完成在运行时得到对象的信息或基类的信息。

要使用CRuntimeClass结构,必须结合使用RUNTIME_CLASS()宏和其他有关运行时类型识别的MFC宏。

CCmdTarget类(1)消息发送MFC应用程序为每个CCmdTarget派生类创建一个称为消息映射表的静态数据结构,可将消息映射到对象所对应的消息处理函数上。

(2)设置光标BeginWaitCursor() 将光标改为沙漏形状;EndWaitCursor() 将光标改回到之前的形状;RestoreWaitCursor()用于将光标还原为等待状态。

(3)支持自动化CCmdTarget类支持程序通过COM接口进行交互操作,自动翻译COM接口的方法。

CWinThread类由CCmdTarget派生,主要工作是创建和处理消息循环。

CWinApp类从CWinThread类派生,成员函数InitApplication()、InitInstance()、Run()。

在InitInstance()函数中,创建了一个单文档模板类或多文档模板类(CDocTemplate)的对象,并且在文档模板的构造函数中,系统定义的宏RUNTIME_CLASS创建了文档类对象,框架窗口类对象和视图类对象.在MFC应用程序中有且仅有一个CWinApp派生类的对象,代表程序运行的主线程,代表应用程序本身。

CWnd类由CCmdTarget类直接派生,是MFC中最基本的GUI对象。

公共变量m_hWnd 用于存放供API函数调用的窗口句柄。

CframeWnd类从CWnd类派生而来,主要用来掌管一个窗口。

其对象是一个框架窗口,包括边界、标题栏、菜单、最大化按钮、最小化按钮和一个激活的视图。

CString类的原理与使用

CString类的原理与使用

CString类的原理与使用先定义几个以后会用到的变量:CString str1, str2, str3;概括说明:MFC对CString类的封装可能的确不如std::string完善,但是也的确不错,功能也足够强大,使用上还很体贴。

其基本特征为:CString类没有基类。

CString类和LPCTSTR的关系:MSDN上说“CString objects follow "value semantics." Think of a CString object as an actual string, not as a pointer to a string.”也就是说用的时候除了考虑使用它的成员函数的方式,就把它当作普通的c-style字符串来使用就行了。

你可以在构造函数中使用LPCTSTR:CString str("Hello World!");可以:str1 = str2; 或者 str1 = “Hello”;也可以:str3 = str1 + str2; 或者 str3 = str1 + “Hello”;当然也可以:str1 += str2; 或者 str1 += “Hello”;实际上下列的这些操作符都可以用在CString对象之间或者CString和LPCTSTR对象之间:==、!=、<、>、<=、>=自然,将CString对象强制转换到LPCTSTR类型也就应该在情理之中:LPCTSTR string = (LPCTSTR) str1;CString支持UNICODE和多字节字符集(MBCS)。

因为其本身是基于TCHAR的——当然你不要忘了定义编码方式,如:#define _UNICODE。

CString支持引用计数。

可以通过其成员函数LockBuffe/和UnLockBuffer来禁用/启用引用计数。

对于CString类的成员函数的定义、说明、返回值等形式在此并不赘述,如有此疑问请参阅:中的相关链接。

CString类型常用函数(mfcc++)

CString类型常用函数(mfcc++)

CString类一、常用成员函数1.int GetLength()const;说明:获取CString类对象包含字符串的长度(字符数)。

2.BOOL IsEmpty()const;说明:测试CString类对象包含的字符串是否为空。

3.void Empty();说明:使CString类对象包含的字符串为空字符串。

4.TCHAR GetAt(int nIndex )const;说明:获得字符串指定位置处的字符。

5.TCHAR operator [](int nIndex )const;说明:获得字符串指定位置处的字符,作用和GetAt()一样。

6.void SetAt(int nIndex, TCHAR ch );说明:设定字符串指定位置处的字符。

7.operator LPCTSTR ()const;说明:返回指向储存在CString类对象内的字符串指针。

8.MidMid函数有两个重载函数:CString Mid(int nFirst )const; throw(CMemoryException );获取从nFirst位置开始的子串。

CString Mid(int nFirst, int nCount )const; throw(CMemoryException );获取从nFirst位置开始包含nCount个字符的子串。

9.CString Left(int nCount )const;throw(CMemoryException );说明:获取字符串左边nCount长度的字符串。

10.CString Right(int nCount )const; throw(CMemoryException );说明:获取字符串右边nCount长度的字符串。

11.CString SpanIncluding(LPCTSTR lpszCharSet )const;throw (CMemoryException );说明:从字符串中提取包含在指定字符集lpszCharSet中的字符的子串。

CFile操作详解

CFile操作详解

各种关于文件的操作在程序设计中是十分常见,如果能对其各种操作都了如指掌,就可以根据实际情况找到最佳的解决方案,从而在较短的时间内编写出高效的代码,因而熟练的掌握文件操作是十分重要的。

本文将对Visual C++中有关文件操作进行全面的介绍,并对在文件操作中经常遇到的一些疑难问题进行详细的分析。

1.文件的查找当对一个文件操作时,如果不知道该文件是否存在,就要首先进行查找。

MFC中有一个专门用来进行文件查找的类CFileFind,使用它可以方便快捷地进行文件的查找。

下面这段代码演示了这个类的最基本使用方法。

CString strFileTitle;CFileFind finder;BOOL bWorking =finder.FindFile("C:\\windows\\sysbkup\\*.cab");while(bWorking){bWorking=finder.FindNextFile();strFileTitle=finder.GetFileTitle();}2.文件的打开/保存对话框让用户选择文件进行打开和存储操作时,就要用到文件打开/保存对话框。

MFC的类CFileDialog用于实现这种功能。

使用CFileDialog声明一个对象时,第一个BOOL型参数用于指定文件的打开或保存,当为TRUE时将构造一个文件打开对话框,为FALSE时构造一个文件保存对话框。

在构造CFileDialog对象时,如果在参数中指定了OFN_ALLOWMULTISELECT风格,则在此对话框中可以进行多选操作。

此时要重点注意为此CFileDialog对象的m_ofn.lpstrFile分配一块内存,用于存储多选操作所返回的所有文件路径名,如果不进行分配或分配的内存过小就会导致操作失败。

下面这段程序演示了文件打开对话框的使用方法。

CFileDialog mFileDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT, "All Files (*.*)|*.*||",AfxGetMainWnd());CString str(" ",10000);mFileDlg.m_ofn.lpstrFile=str.GetBuffer(10000);str.ReleaseBuffer();POSITION mPos=mFileDlg.GetStartPosition();CString pathName(" ",128);CFileStatus status;while(mPos!=NULL){pathName=mFileDlg.GetNextPathName(mPos);CFile::GetStatus( pathName, status );}3.文件的读写文件的读写非常重要,下面将重点进行介绍。

MFC中CString操作指南

MFC中CString操作指南

CStri‎n g类一‎、常用成员‎函数1.‎i nt G‎e tLen‎g th(‎) con‎s t;说‎明:获取C‎S trin‎g类对象包‎含字符串的‎长度(字符‎数)。

2‎.BOOL‎IsEm‎p ty(‎) con‎s t;说‎明:测试C‎S trin‎g类对象包‎含的字符串‎是否为空。

‎3.vo‎i d Em‎p ty(‎);说明‎:使CSt‎r ing类‎对象包含的‎字符串为空‎字符串。

‎4.TCH‎A R Ge‎t At(‎i nt n‎I ndex‎) co‎n st;‎说明:获得‎字符串指定‎位置处的字‎符。

5.‎T CHAR‎oper‎a tor ‎[]( i‎n t nI‎n dex ‎) con‎s t;说‎明:获得字‎符串指定位‎置处的字符‎,作用和G‎e tAt(‎)一样。

‎6.voi‎d Set‎A t( i‎n t nI‎n dex,‎TCHA‎R ch ‎);说明‎:设定字符‎串指定位置‎处的字符。

‎7.op‎e rato‎r LPC‎T STR ‎() c‎o nst;‎说明:返‎回指向储存‎在CStr‎i ng类对‎象内的字符‎串指针。

‎8.Mid‎Mid函‎数有两个重‎载函数:‎C Stri‎n g Mi‎d( in‎t nFi‎r st )‎cons‎t; th‎r ow(‎C Memo‎r yExc‎e ptio‎n);‎获取从nF‎i rst位‎置开始的子‎串。

CS‎t ring‎Mid(‎int ‎n Firs‎t, in‎t nCo‎u nt )‎cons‎t; th‎r ow(‎C Memo‎r yExc‎e ptio‎n);‎获取从nF‎i rst位‎置开始包含‎n Coun‎t个字符的‎子串。

9‎.CStr‎i ng L‎e ft(‎i nt n‎C ount‎) co‎n st;t‎h row(‎CMem‎o ryEx‎c epti‎o n );‎说明:获‎取字符串左‎边nCou‎n t长度的‎字符串。

MFC函数大全

MFC函数大全
nAdjustType:用于现场编辑的枚举类型。它可以具有以下的值:CWnd::adjustBorder = 0,意味着在计算时不考虑滚动条大小;或者CWnd::adjustBorder = 1,意味着它们将被加入最终的矩形大小。
Detach p53
FromHandle p53
GetSafeHwnd p54
SetThreadPriority
SuspendThread
ExitInstance
InitInstance
IsIdleMessage
OnIdle
PreTranslateMessage
ProcessMessageFilter
ProcessWndProcExcetion
PumpMessage
Run
CWinApp
AddDocTemplate
AddToRecentFileList
CreatePrinterDC
GetFirstDocTemplatePosition
GetNextDocTemplate
GetProfileBinary
GetProfileInt
class CPerson : public CObject
{
protected:
CString m_strName;
float m_salary;
public:
#ifdef _DEBUG
// Override
virtual void AssertValid() const;
CenterWindow p63
ChildWindowFromPoint p63
FindWindow p63

cstring的头函数

cstring的头函数

cstring的头函数Cstring是一个在C++编程语言中用于处理字符串的头文件。

它提供了一系列函数来处理字符数组(字符串),包括拷贝、连接、比较、查找等操作。

本篇文章将详细介绍Cstring头文件的各种函数,并给出具体的使用示例。

1. strlen函数strlen函数用于获取字符串的长度。

它的原型如下:c++size_t strlen(const char *str);该函数接收一个指向字符串的指针,并返回该字符串的长度。

例如,下面是一个使用strlen函数来获取字符串长度的示例:c++#include <cstring>#include <iostream>int main() {const char *str = "Hello, world!";size_t len = strlen(str);std::cout << "字符串长度为:" << len << std::endl;return 0;}运行结果:字符串长度为:132. strcpy函数strcpy函数用于将一个字符串拷贝到另一个字符串中。

它的原型如下:c++char *strcpy(char *destination, const char *source);该函数接收两个参数,第一个参数是目标字符串的指针,第二个参数是源字符串的指针。

它会将源字符串的内容拷贝到目标字符串中,并返回目标字符串的指针。

下面是一个使用strcpy函数来拷贝字符串的示例:c++#include <cstring>#include <iostream>int main() {const char *source = "Hello, world!";char destination[20];strcpy(destination, source);std::cout << "拷贝后的字符串为:" << destination << std::endl;return 0;}运行结果:拷贝后的字符串为:Hello, world!3. strcat函数strcat函数用于将两个字符串连接起来。

CString之Find()、FindOneOf()、ReverseFind()

CString之Find()、FindOneOf()、ReverseFind()

CString之Find()、FindOneOf()、ReverseFind()⼀、CString之Find()、FindOneOf()、ReverseFind()此三个函数返回值均为整数int。

1、Find()该函数从左侧0索引开始,查找第⼀个出现的字符位置,返回position。

⽰例如下:1CString s( "abcd");2ASSERT( s.Find( 'b') == 1 );返回值:如果查到,返回以0索引起始的位置未查到,返回-12、FindOneOf()给定⼀字符串,然后查找其中出现的第⼀个字符位置,⽰例如下:1CString s( "abcdef");2ASSERT( s.FindOneOf( "zb") == 1 );返回值:如果查到,返回以0索引起始的位置未查到,返回-13、ReverseFind()该函数反向查找字符出现的位置。

⽰例如下:1CString s( "abcd");2ASSERT( s.ReverseFind( 'b') == 2 );返回值:如果查到,返回以0索引起始的位置未查到,返回-1⼆、CString之Left()、Mid()、Right()查找完成后,我们可能需要截取字符串。

CString有如下⼏个字符串截取函数。

1、Left(int nCount)该函数截取左侧nCount个字符,如果遇到双字节字符(下⾯Mid和Right同样理解),⽐如中⽂,则可能会截断乱码。

因为nCount是按照字节计数的。

2、Mid(int nFirst)和Mid( int nFirst, int nCount)Mid(int nFirst)函数截取从nFirst开始,直到字符串结束的字符串。

Mid( int nFirst, int nCount)函数则截取从nFirst开始,截取nCount个字节字符。

c++cstring用法

c++cstring用法

在C++中,`cstring`是一个包含C风格字符串操作的库。

C风格字符串是指以空字符`\0`结尾的字符数组。

`cstring`库提供了一系列函数来操作这种类型的字符串。

下面是一些常用的`cstring`函数:1. `memcmp()`: 用于比较内存区域的内容。

2. `memcpy()`: 用于复制内存区域的内容。

3. `strcat()`: 用于连接两个C风格字符串。

4. `strncat()`: 用于连接两个C风格字符串,并指定最大的复制字符数。

5. `strcmp()`: 用于比较两个C风格字符串。

6. `strncmp()`: 用于比较两个C风格字符串,并指定最大的复制字符数。

7. `strchr()`: 用于查找指定字符在字符串中第一次出现的位置。

8. `strrchr()`: 用于查找指定字符在字符串中最后一次出现的位置。

9. `strpbrk()`: 用于查找一组字符中任意一个在字符串中出现的位置。

10. `strspn()`: 用于查找字符串中第一个出现的空白字符(如空格、制表符或换行符)的位置。

11. `strstr()`: 用于查找子字符串在主字符串中第一次出现的位置。

12. `strtok()`: 用于分割字符串,将字符串分解为一系列由特定分隔符分隔的标记。

这些函数的使用方法如下:* `memcpy(dst, src, size)`: 将`src`指向的内存区域的前`size`个字节复制到`dst`指向的内存区域。

* `strcat(dest, src)`: 将`src`指向的字符串连接到`dest`指向的字符串的结尾,并添加一个空字符来标记新字符串的结尾。

* `strcmp(str1, str2)`: 比较`str1`和`str2`指向的字符串,如果它们相等,则返回0;如果`str1`小于`str2`,则返回一个负数;如果`str1`大于`str2`,则返回一个正数。

* `strtok(str, delim)`: 根据指定的分隔符`delim`将`str`指向的字符串分割为一系列标记,并返回指向第一个标记的指针。

CString成员函数详解

CString成员函数详解

CString类所有成员函数详解VC里CString是我们最常用的类之一,我们觉得对它很熟悉了,可是你知道它的所有用法吗?还是系统的学习一下吧,认真看完本文就OK了。

下面开始:CString::Compareint Compare( LPCTSTR lpsz ) const;返回值字符串一样返回0小于lpsz 返回-1大于lpsz 返回1区分大小字符CString s1( "abc" );CString s2( "abd" );ASSERT( pare( s2 ) == -1 );ASSERT( pare( "abe" ) == -1 );CString::CompareNoCaseint CompareNoCase( LPCTSTR lpsz ) const;返回值字符串一样返回0小于lpsz 返回-1大于lpsz 返回1不区分大小字符CString::Collateint Collate( LPCTSTR lpsz ) const;同CString::CompareCString::CollateNoCaseint CollateNocase( LPCTSTR lpsz ) const;同CString::CompareNoCaseCString::CStringCString( );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" );CString s3 = s2;CString s4( s2 + " " + s3 );CString s5( 'x' ); // s5 = "x"CString s6( 'x', 6 ); // s6 = "xxxxxx"CString s7((LPCSTR)ID_FILE_NEW); // s7 = "Create a new document"CString city = "Philadelphia";CString::Deleteint Delete( int nIndex, int nCount = 1);返回值是被删除前的字符串的长度nIndex是第一个被删除的字符,nCount是一次删除几个字符。

mfc cstring拆分函数

mfc cstring拆分函数

mfc cstring拆分函数CString是MFC中的一个字符串类,提供了一系列的成员函数用于字符串的操作。

其中也包含了拆分字符串的函数。

本文将介绍CString 中的拆分函数,包括Split、Tokenize以及自定义的拆分函数。

一、Split函数Split函数是CString中最常用的拆分字符串的函数之一。

它的原型如下:int Split(CStringArray& sa, LPCTSTR lpszStr, LPCTSTR lpszDelimiters);参数说明:sa:用于存储拆分结果的CStringArray对象。

lpszStr:需要拆分的字符串。

lpszDelimiters:用于拆分字符串的分隔符字符串。

Split函数会按照分隔符字符串将源字符串拆分成若干个子字符串,并将结果存储在CStringArray对象中。

下面是一个使用示例:CString str = "Hello,World";CStringArray strArray;str.Split(strArray, ",");Split函数将以逗号为分隔符,将字符串str拆分成两个子字符串"Hello"和"World",并将结果存储在strArray中。

二、Tokenize函数Tokenize函数是CString中另一个拆分字符串的函数。

它的原型如下:int Tokenize(CString& strToken, int& iStart, LPCTSTR lpszSeparators);参数说明:strToken:用于存储拆分结果的CString对象。

iStart:指示拆分起始位置的索引,拆分完成后会自动更新为下一次拆分的起始位置。

lpszSeparators:用于拆分字符串的分隔符字符串。

Tokenize函数会按照分隔符字符串将源字符串从起始位置开始拆分成两个子字符串,并将结果存储在strToken中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

CString类所有成员函数详解2009-03-27 10:53CString类所有成员函数详解VC里CString是我们最常用的类之一,我们觉得对它很熟悉了,可是你知道它的所有用法吗?还是系统的学习一下吧,认真看完本文就OK了。

下面开始:CString::Compareint Compare( LPCTSTR lpsz ) const;返回值字符串一样返回0小于lpsz 返回-1大于lpsz 返回1区分大小字符CString s1( "abc" );CString s2( "abd" );ASSERT( pare( s2 ) == -1 );ASSERT( pare( "abe" ) == -1 );CString::CompareNoCaseint CompareNoCase( LPCTSTR lpsz ) const;返回值字符串一样返回0小于lpsz 返回-1大于lpsz 返回1不区分大小字符CString::Collateint Collate( LPCTSTR lpsz ) const;同CString::CompareCString::CollateNoCaseint CollateNocase( LPCTSTR lpsz ) const; 同CString::CompareNoCase CString::CStringCString( );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" );CString s3 = s2;CString s4( s2 + " " + s3 ); CString s5( 'x' ); // s5 = "x"CString s6( 'x', 6 ); // s6 = "xxxxxx"CString s7((LPCSTR)ID_FILE_NEW); // s7 = "Create a new document" CString city = "Philadelphia";CString::Deleteint Delete( int nIndex, int nCount = 1);返回值是被删除前的字符串的长度nIndex是第一个被删除的字符,nCount是一次删除几个字符。

根据我实验得出的结果:当nCount>要删除字符串的最大长度(GetCount() - nIndex)时会出错,当nCount过大,没有足够的字符删除时,此函数不执行。

例子CString str1,str2,str3;char a;str1 = "nihao";str2 = "nIhao";int x;// int i=(str1 == str2);str1.Delete(2,3);如果nCount(3) > GetCount() –nIndex (5-2)就会执行错误CString::EmptyVoid Empty( );没有返回值清空操作;例子CString s( "abc" );s.Empty();ASSERT( s.GetLength( ) == 0 );CString::Findint Find( TCHAR ch ) const;int Find( LPCTSTR lpszSub ) const;int Find( TCHAR ch, int nStart ) const;int Find( LPCTSTR lpszSub, int nStart ) const;返回值不匹配的话返回-1; 索引以0 开始nStar 代表以索引值nStart 的字符开始搜索,即为包含以索引nStart字符后的字符串例子CString s( "abcdef" );ASSERT( s.Find( 'c' ) == 2 );ASSERT( s.Find( "de" ) == 3 );Cstring str(“The stars are aligned”);Ing n = str.Find('e',5);ASSERT(n == 12)CString::FindOneOfint FindOneOf( LPCTSTR lpszCharSet ) const;返回值不匹配的话返回-1; 索引以0 开始注意::返回此字符串中第一个在lpszCharSet中也包括字符并且从零开始的索引值例子CString s( "abcdef" );ASSERT( s.FindOneOf( "xd" ) == 3 ); // 'd' is first match.CString::Formatvoid Format( LPCTSTR lpszFormat, ... );void Format( UINT nFormatID, ... );lpszFormat 一个格式控制字符串nFormatID 字符串标识符例子CString str;Str.Format(“%d”,13);此时Str为13CString::GetAtTCHAR GetAt( int nIndex ) const;返回标号为nIndex的字符,你可以把字符串理解为一个数组,GetAt类似于[].注意nIndex的范围,如果不合适会有调试错误。

CString::GetBufferLPTSTR GetBuffer( int nMinBufLength );返回值一个指向对象的(以空字符结尾的)字符缓冲区的LPTSTR 指针。

参数nMinBufLength字符缓冲区的以字符数表示的最小容量。

这个值不包括一个结尾的空字符的空间。

说明此成员函数返回一个指向CString 对象的内部字符缓冲区的指针。

返回的LPTSTR 不是const,因此可以允许直接修改CString 的内容。

如果你使用由GetBuffer 返回的指针来改变字符串的内容,你必须在使用其它的CString 成员函数之前调用ReleaseBuffer 函数。

在调用ReleaseBuffer 之后,由GetBuffer 返回的地址也许就无效了,因为其它的CString 操作可能会导致CString 缓冲区被重新分配。

如果你没有改变此CString 的长度,则缓冲区不会被重新分配。

当此CString 对象被销毁时,其缓冲区内存将被自动释放。

注意,如果你自己知道字符串的长度,则你不应该添加结尾的空字符。

但是,当你用ReleaseBuffer 来释放该缓冲区时,你必须指定最后的字符串长度。

如果你添加了结尾的空字符,你应该给ReleaseBuffer 的长度参数传递-1 ,ReleaseBuffer 将对该缓冲区执行strlen 来确定它的长度。

下面的例子说明了如何用CString::GetBuffer。

// CString::GetBuffer 例子CString s( "abcd" );#ifdef _DEBUGafxDump << "CString s " << s << "\n";#endifLPTSTR p = s.GetBuffer( 10 );strcpy( p, "Hello" ); // 直接访问CString 对象。

s.ReleaseBuffer( );#ifdef _DEBUGafxDump << "CString s " << s << "\n";#endifCString::GetLengthint GetLength( ) const;返回值返回字符串中的字节计数。

说明此成员函数用来获取这个CString 对象中的字节计数。

这个计数不包括结尾的空字符。

对于多字节字符集(MBCS),GetLength 按每一个8 位字符计数;即,在一个多字节字符中的开始和结尾字节被算作两个字节。

示例下面的例子说明了如何使用CString::GetLength。

// CString::GetLength 示例CString s( "abcdef" );ASSERT( s.GetLength() == 6 );CString::Insertint Insert( int nIndex, TCHAR ch );int Insert( int nIndex, LPCTSTR pstr );返回修改后的长度,nIndex是字符(或字符串)插入后的索引号例子CString str( “HockeyBest”);int n = str.Insert( 6, “is”);ASSERT( n == str.GetLength( ) );printf( “1: %s\n”, ( LPCTSTR ) str );n = str.Insert( 6, ' ' );ASSERT( n == str.GetLength( ) );printf ( “2: %s\n”, (LPCTSTR) STR );n = str.Insert(555, ‘1’);ASSERT( n == str.GetLength ( ) );printf ( “3: %s\n”, ( LPCTSTR ) str );输出1. Hockeyis Best2. Hockey is Best3. Hockey is Best!CString::IsEmptyBOOL IsEmpty( ) const;返回值如果CString 对象的长度为0,则返回非零值;否则返回0。

说明此成员函数用来测试一个CString 对象是否是空的。

示例下面的例子说明了如何使用CString::IsEmpty。

相关文档
最新文档