• (C/C++学习)14.C语言字符串处理函数(二)


    说明:上节着重解释了字符串处理的库函数处理,这节将针对一些常用的需求,进行非库函数的处理。

    一.去除某一个字符串中的某个字符

     

    1.去除字符串右边的空格

      1 void trimStrRightSpace(char * str)
      2 {
      3     while(*str)
      4         str++;
      5     while(*(--str) == ' ')
      6         *str = '';
      7 }

    2.去除字符串左边的空格

      1 void trimStrLeftSpace(char * str)
      2 {
      3     char *t= str;
      4     if(*t != ' ' )
      5         return;
      6     while(*t ==' ')
      7         t++;
      8     while((*str++ = *t++))
      9         ;
     10 }

    3.去除所有的空格

      1 void trimStrSpace(char *str)
      2 {
      3     char *t = str;
      4     while(*str)
      5     {
      6         if(*str != ' ')
      7             *t++ = *str;
      8         str++;
      9     }
     10     *t='';
     11 }

     

    值得注意的是,可以将上述代码中的空格替换成任意单个字符以实现对某个字符串去掉所有的某个字符的功能,并且可以将最终的字符串返回,如下代码:

      1 char* charremove(char *p)
      2 {
      3     char *t = p;
      4     char *q = p;
      5     while(*t)
      6     {
      7         if(*t != ' ' && *t != '	')
      8             //去除某段字符串中的任意字符
      9             *p++ = *t;
     10         t++;
     11     }
     12     *p = '';
     13     return q;
     14 }

    二.字符串的翻转

    方案1:

      1 void reverse(char *str)
      2 {
      3     char *start = str;
      4     char *end = start + strlen(str)-1;
      5     while(start < end)
      6     {
      7         *start = *start ^*end;
      8         *end = *start ^*end;
      9         *start = *start ^*end;
     10         start++;
     11         end--;
     12     }
     13 }

    方案2:

      1 void reverse(char *str,char*buf)
      2 {
      3     if(*str == '')
      4         return;
      5     reverse(str+1,buf);
      6     strncat(buf,str,1);
      7 }

    三.随机字符串的生成

      1 string generatestring()
      2 {
      3     string str1;
      4     string str("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890");
      5     int c = (rand()%62);
      6     cout<<c<<endl;
      7     //打印生成字符串中的字符个数
      8     for(int i = 0;i < c;i++)
      9     {
     10         int d = rand()%62;
     11         str1 += str[d];
     12     }
     13     return str1;
     14 }

    如下,要求随机生成 10 个字符串,并对其进行排列,排列规则由 cmp 函数决定(以ASCII 值得大小进行比较)。需要注意的是,利用上述函数生成随机字符串时需要在主函数中调用随机函数种子

      1 #include <iostream>
      2 #include<vector>
      3 #include<algorithm>
      4 #include<time.h>
      5 using namespace std;
      6 
      7 string generatestring()
      8 {
      9     string str1;
     10     string str("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890");
     11     int c = (rand()%62);
     12     cout<<c<<endl;
     13     for(int i = 0;i < c;i++)
     14     {
     15         int d = rand()%62;
     16         str1 += str[d];
     17     }
     18     return str1;
     19 }
     20 
     21 bool cmp(string a, string b)
     22 {
     23     return  a < b;
     24 }
     25 
     26 int main()
     27 {
     28     srand(time(NULL));
     29     string str1,str2;
     30     vector<string> vec(10);
     31     generate(vec.begin(),vec.end(),[](){return generatestring();});
     32     sort(vec.begin(),vec.end(),cmp);
     33     for(string it:vec)
     34         cout<<it<<"
    ";
     35     return 0;
     36 }
     37 
    查看代码
  • 相关阅读:
    ionic3打包打包安卓apk详细过程以及遇到的问题
    webpack+vue解决前端跨域问题
    在ionic3+angular4项目中添加自定义图标
    十. 图形界面(GUI)设计13.鼠标事件
    十. 图形界面(GUI)设计13.鼠标事件
    十. 图形界面(GUI)设计12.滚动条
    十. 图形界面(GUI)设计11.对话框
    十. 图形界面(GUI)设计10.菜单
    十. 图形界面(GUI)设计9.列表和组合框
    十. 图形界面(GUI)设计8.选择框和单选按钮
  • 原文地址:https://www.cnblogs.com/tuihou/p/9818868.html
Copyright © 2020-2023  润新知