删除字符子串

本文介绍了一个C++程序,用于从一个字符串中删除另一个字符串中出现的所有字符。文章提供了完整的源代码,并解释了如何实现这一功能。

1. 简述

    从一个字符串中,删除另一个字符串中出现过的所有字符。基本上比较简单,主要就是要保存的字符放到合适的位置,要删除的字符最后要释放掉,还有就是'\0'的处理。

2. 代码  

#include  < iostream >
using   namespace  std;

bool  find( const   char *  cs,  const   char  ch) {
  assert(cs 
!=   0 ); 
  
while ( ' \0 '   !=   * cs  &&  ch  !=   * cs)
    cs
++ ;
  
if ( ' \0 '   ==   * cs)
    
return   false ;
  
else  
    
return   true ;
}

void  delete_str( char   * str,  const   char *  cs) {
  assert(str 
!=   0   &&  cs  !=   0 );
  
char   *  result  =  str;
  
int  gap, len; gap  =  len  =   0
  
while ( * str  !=   ' \0 ' ) {
    
if (find(cs,  * str)) {  //  放弃该字符
      gap ++ //  删除的字符个数
    }
    
else  {  //  保存该字符
      len ++ //  保留的字符个数
       * (str - gap)  =   * str;
    }
    str
++ ;
  }
  
* (result + len)  =   ' \0 ' //  '\0'处理
   for ( int  i = 0 ; i < gap; i ++ //  释放内存
    delete (result + len + i + 1 );
}

int  main() {
  
char  str[ 100 =  { ' h ' ' e ' ' l ' ' l ' ' o ' ' , ' ' w ' ' o ' ' r ' ' l ' ' d ' ' . ' };
  
char  cs[ 5 =   " lo " ;
  cout 
<<  str  <<  endl;
  cout 
<<  cs  <<  endl;
  delete_str(str, cs);
  cout 
<<  str  <<  endl;
  system(
" PAUSE " );
  
return   0 ;
}

3. 备注

    主要考查基本的C++编程,难度不大。

转载于:https://www.cnblogs.com/pangxiaodong/archive/2011/08/19/2146160.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值