CString常用方法简介 
作者:webmaster 出处:无

CString::Compare
int Compare( LPCTSTR lpsz ) const;
返回值  字符串一样 返回0 
         小于lpsz  返回-1
         大于lpsz  返回1
         区分大小字符
         CString s1( "abc" );
CString s2( "abd" );
ASSERT( s1.Compare( s2 ) == -1 );
ASSERT( s1.Compare( "abe" ) == -1 );
 
CString::CompareNoCase
int CompareNoCase( LPCTSTR lpsz ) const;
返回值  字符串一样 返回0 
        小于lpsz  返回-1
        大于lpsz  返回1
        不区分大小字符
 
CString::Collate
int Collate( LPCTSTR lpsz ) const;
同CString::Compare
 
CString::CollateNoCase
int CollateNocase( LPCTSTR lpsz ) const;
同CString::CompareNoCase
 
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" );               
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::Delete
int 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::Empty
Void Empty( );
没有返回值  清空操作;
例子
CString s( "abc" );
s.Empty();
ASSERT( s.GetLength( ) == 0 );
 
CString::Find
int 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::FindOneOf
int FindOneOf( LPCTSTR lpszCharSet ) const;
返回值  不匹配的话返回 -1;  索引以0 开始
          注意::返回此字符串中第一个在lpszCharSet中 也包括字符并且从零开始的索引值
例子
CString s( "abcdef" );
ASSERT( s.FindOneOf( "xd" ) == 3 ); // 'd' is first match.
 
CString::Format
void Format( LPCTSTR lpszFormat, ... );
void Format( UINT nFormatID, ... );
lpszFormat  一个格式控制字符串
nFormatID  字符串标识符
例子 
             CString str;
Str.Format(“%d”,13);  
此时Str为13
 
CString::GetAt
TCHAR GetAt( int nIndex ) const;
返回标号为nIndex的字符,你可以把字符串理解为一个数组,GetAt类似于[].注意nIndex的范围,如果不合适会有调试错误。
 
CString::GetBuffer
LPTSTR 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 _DEBUG
afxDump << "CString s " << s << "\n";
#endif
LPTSTR p = s.GetBuffer( 10 );
strcpy( p, "Hello" ); // 直接访问CString 对象。
s.ReleaseBuffer( );
#ifdef _DEBUG
afxDump << "CString s " << s << "\n";
#endif
 
CString::GetLength
int GetLength( ) const;
返回值
返回字符串中的字节计数。
说明
此成员函数用来获取这个CString 对象中的字节计数。这个计数不包括结尾的空字符。
对于多字节字符集(MBCS),GetLength 按每一个8 位字符计数;即,在一个多字节字符中的开始和结尾字节被算作两个字节。
示例
下面的例子说明了如何使用CString::GetLength。
// CString::GetLength 示例
CString s( "abcdef" );
ASSERT( s.GetLength() == 6 );
 
CString::Insert
int 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 Best
2. Hockey is Best
3. Hockey is Best!
 
CString::IsEmpty
BOOL IsEmpty( ) const;
返回值
如果CString 对象的长度为0,则返回非零值;否则返回0。
说明
此成员函数用来测试一个CString 对象是否是空的。
示例
下面的例子说明了如何使用CString::IsEmpty。
// CString::IsEmpty 示例
CString s;
ASSERT( s.IsEmpty() );
请参阅 CString::GetLength
 
CString::Left
CString Left( int nCount ) const;  
throw( CMemoryException );
返回的字符串是前nCount个字符。 
例子
CString s( _T("abcdef") );
ASSERT( s.Left(2) == _T("ab") );
 
CString::LoadString
BOOL LoadString( UINT nID );
throw( CMemoryException );
返回值
如果加载资源成功则返回非零值;否则返回0。
nID  一个Windows 字符串资源ID。
说明 此成员函数用来读取一个由nID 标识的Windows 字符串资源,并放入一个已有CString 对象中。
示例
下面的例子说明了如何使用CString::LoadString。
// CString::LoadString 示例
#define IDS_FILENOTFOUND 1
CString s;
if (! s.LoadString( IDS_FILENOTFOUND ))
 
CString::MakeLower
void MakeLower( );
改变字符的小写
 
CString::MakeReverse
void MakeReverse( );
字符倒置
 
CString::MakeUpper
void MakeUpper( );
改变字符的大写
CString::Mid
CString Mid( int nFirst ) const;  
CString Mid( int nFirst, int nCount ) const;  
nCount代表要提取的字符数, nFirst代表要提取的开始索引位置
例子
CString s( _T("abcdef") );
ASSERT( s.Mid( 2, 3 ) == _T("cde") );
CString::ReleaseBuffer
void ReleaseBuffer( int nNewLength = -1 );
参数
nNewLength
此字符串的以字符数表示的新长度,不计算结尾的空字符。如果这个字
符串是以空字符结尾的,则参数的缺省值-1 将把CString 的大小设置为
字符串的当前长度。
说明
使用ReleaseBuffer 来结束对由GetBuffer 分配的缓冲区的使用。如果你知道缓
冲区中的字符串是以空字符结尾的,则可以省略nNewLength 参数。如果字符
串不是以空字符结尾的,则可以使用nNewLength 指定字符串的长度。在调用
ReleaseBuffer 或其它CString 操作之后,由GetBuffer 返回的地址是无效的。
示例
下面的例子说明了如何使用CString::ReleaseBuffer。
// CString::ReleaseBuffer 示例
CString s;
s = "abc";
LPTSTR p = s.GetBuffer( 1024 );
strcpy(p, "abc"); // 直接使用该缓冲区
ASSERT( s.GetLength() == 3 ); // 字符串长度 = 3
s.ReleaseBuffer(); // 释放多余的内存,现在p 无效。
ASSERT( s.GetLength() == 3 ); // 长度仍然是3
 
CString::Remove
int CString::Remove ( TCHAR ch );
返回值
返回从字符串中移走的字符数。如果字符串没有改变则返回零。
参数
ch
要从一个字符串中移走的字符。
说明
此成员函数用来将ch 实例从字符串中移走。与这个字符的比较是区分大小写
的。
示例
// 从一个句子中移走小写字母'c':
CString str (“This is a test.”);
int n = str.Remove( 't' );
ASSERT( n == 2 );
ASSERT( str ==“This is a es. ” );
 
CString::Replace
int Replace( TCHAR chOld, TCHAR chNew );
int Replace( LPCTSTR lpszOld, LPCTSTR lpszNew );
返回值
返回被替换的字符数。如果这个字符串没有改变则返回零。
参数
chOld
要被chNew 替换的字符。
chNew
要用来替换chOld 的字符。
lpszOld
一个指向字符串的指针,该字符串包含了要被lpszNew 替换的字符。
lpszNew
一个指向字符串的指针,该字符串包含了要用来替换lpszOld 的字符。
说明
此成员函数用一个字符替换另一个字符。函数的第一个原形在字符串中用chNew
现场替换chOld。函数的第二个原形用lpszNew 指定的字符串替换lpszOld 指定
的子串。
在替换之后,该字符串有可能增长或缩短;那是因为lpszNew 和lpszOld 的长度
不需要是相等的。两种版本形式都进行区分大小写的匹配。

http://blog.163.com/ccd_ok/blog/static/310238892007510113223798/

【转载】C++——CString用法大全的更多相关文章

  1. C++——CString用法大全

    列表形式的如下: CString的构造函数CString( );例:CString csStr; CString( const CString& stringSrc );例:CString c ...

  2. MVC5 + EF6 + Bootstrap3 (9) HtmlHelper用法大全(下)

    文章来源:Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc5-ef6-bs3-get-started-httphelper-part2.html 上一节 ...

  3. MVC5 + EF6 + Bootstrap3 (8) HtmlHelper用法大全(上)

    文章来源:Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc5-ef6-bs3-get-started-httphelper-part1.html 上一节 ...

  4. MVC HtmlHelper用法大全

    MVC HtmlHelper用法大全HtmlHelper用来在视图中呈现 HTML 控件.以下列表显示了当前可用的一些 HTML 帮助器. 本主题演示所列出的带有星号 (*) 的帮助器. ·Actio ...

  5. C# MessageBox 用法大全(转)

    C# MessageBox 用法大全 http://www.cnblogs.com/Tammie/archive/2011/08/05/2128623.html 我们在程序中经常会用到MessageB ...

  6. MVC中HtmlHelper用法大全参考

    MVC中HtmlHelper用法大全参考 解析MVC中HtmlHelper控件7个大类中各个控件的主要使用方法(1) 2012-02-27 16:25 HtmlHelper类在命令System.Web ...

  7. pandas用法大全

    pandas用法大全 一.生成数据表 1.首先导入pandas库,一般都会用到numpy库,所以我们先导入备用: import numpy as np import pandas as pd12 2. ...

  8. 转帖: 一份超全超详细的 ADB 用法大全

    增加一句 连接 网易mumu模拟器的方法 adb  connect 127.0.0.1:7555 一份超全超详细的 ADB 用法大全 2016年08月28日 10:49:41 阅读数:35890 原文 ...

  9. python之pandas用法大全

    python之pandas用法大全 更新时间:2018年03月13日 15:02:28 投稿:wdc 我要评论 本文讲解了python的pandas基本用法,大家可以参考下 一.生成数据表1.首先导入 ...

随机推荐

  1. maraidb半同步复制

    半同步复制是在主从同步复制的基础之上,主从同步前面我的博文有介绍 Semisynchronous Replication(半同步复制)则一定程度上保证提交的事务已经传给了至少一个备库 MySQL在加载 ...

  2. SequoiaDB的数据分区操作

    在SequoiaDB集群环境中,用户往往将数据存放在不同的逻辑节点与物理节点中,以达到并行计算的目的. 分区:把包含相同数据的一组数据节点叫一个分区,如上图绿色方块组成三个分区. 分区键:切分时,所依 ...

  3. 解决vmware安装 win7 后 没有虚拟网卡驱动 不能上网的问题

    项目需要用到win7 32位系统,于是装个虚拟机,换了好几个系统资源,都是没有网卡驱动, XP 2003 都能上网唯独WIN7 不行,安装vmware tools也不管用,终于找到了这个东西.vmwa ...

  4. How to get the underlying SSRS Report Query, reset query , add your own ranges and execute report [AX2012]

    Below is the small code snippet to get the underlying query of the SSRS report, reset query, prompt ...

  5. WCF全面解析第一章 WCF 简介

    1.WCF中的 "A","B","C" 介绍 我们先看个生活中的例子,某一天,公司的领导让你去送一份合同文件,送文件的过程你可以选择的交通方 ...

  6. Hadoop1.x与2.x安装笔记

    Hadoop1.x与2.x安装笔记 Email: chujiaqiang229@163.com 2015-05-09 Hadoop 1.x 安装 Hadoop1.x 集群规划 No 名称 内容 备注 ...

  7. 欢迎来到vmax-tam的博客

    欢迎来到vmax-tam的博客 我是一个新手程序员 以后会不断学习 把学到的东西记录下来 和大家一起分享的 谢谢大家指教

  8. 刀哥多线程之并发队列gcd-05-dispatch_queue_concurrent

    并发队列 特点 以先进先出的方式,并发调度队列中的任务执行 如果当前调度的任务是同步执行的,会等待任务执行完成后,再调度后续的任务 如果当前调度的任务是异步执行的,同时底层线程池有可用的线程资源,会再 ...

  9. 函数调用和inline作用

    函数调用的开销: 函数被调用时,要有函数调用和返回.要保存当前程序上下文信息,以便函数调用完毕后返回原来的地方,继续执行程序.将函数的参数进行压栈.出栈,执行函数,函数调用完毕后释放内部变量占用的内存 ...

  10. ORACLE SQL TUNING ADVISOR 使用方法

    sql tunning advisor 使用的主要步骤: 1 建立tunning task 2 执行task 3 显示tunning 结果 4 根据建议来运行相应的调优方法  下面来按照这个顺序来实施 ...