码迷,mamicode.com
首页 > 其他好文 > 详细

字符串相关操作

时间:2015-03-30 22:57:27      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:

字符串的操作多用用就行了。

在字符串相关操作中,进行字面值的处理需要用库函数,"="操作的是存储字符串的地址(基本类型)。 

1、C中字符串的赋值

2、C中字符串长度和大小比较

3、C中字符串拼接

4、C中字符串的拆分

4、C中字符串与其他类型转化 

     sprintf()->其他格式转成字符串  和 sscanf()->字符串转成其他格式;

几个小练习:

1、字符串中去掉重复的字母:

int judge[52]={0};
string derepeat(string str){
    string str_change;
    for(iterator it=str.begin(); it!=str.end(); ++it){
        if(*it-a<26 && !judge[*it-a] && *it-a>=0 ){
             //如果用strcpy(),怎么写
str_change+=*it; judge[
*it-a]=1; } else if(*it-A<26 && !judge[26+*it-A] && *it-A>=0){ str_change+=*it; judge[26+*it-A]=1; } else if( (*it-‘Z‘>0 && *it-‘a‘<0) || *it-‘A‘<0 || *it-‘z‘ >0)
str_change+=*it; } return str_change; }

2、字符串压缩,输入:asdddddwerrreeeww      输出:as5dwe3r3e2w

string string_reduce(string str){
    string str_change;
    ostringstream oss; 
    for(string::iterator it=str.begin(); it!=str.end(); ++it){
        int count=1;
        for(; *it==*(it+1) && it!=str.end(); ){  //iterator重载了关系运算符
             ++it;
             ++count;
        }
        if(1==count){
              //实现方法很多,这里复习下IO流的用法,也容易理解
             oss << *it;
        }
        else {
             oss << count << *it;  //格式化成字符串
        }
    }
    str_change = oss.str(); //c++的string重载了赋值运算符;
    return string_change;
}

3.字符全排列,输入:abc(默认不重复,重复的可以去重)   输出:abc  acb  bac  bca  cab  cba  

  全排列可以看做是两位置交换而来;

void perm(char* pstr, char* pbegin){ 
if(*pbegin == \0)  
        printf("%s\n",pstr);  
    else{ 
        for(char* p_ch = pbegin; *p_ch != \0; p_ch++){ 
          
            swap(*pbegin,*p_ch);  
            perm(pstr, pbegin+1);  
            swap(*pbegin,*p_ch);  
        }  
    }  
}

 

字符串相关操作

标签:

原文地址:http://www.cnblogs.com/young8848/p/4378095.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!