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

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

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

 void trimStrRightSpace(char * str)
{
while(*str)
str++;
while(*(--str) == ' ')
*str = '\0';
}

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

 void trimStrLeftSpace(char * str)
{
char *t= str;
if(*t != ' ' )
return;
while(*t ==' ')
t++;
while((*str++ = *t++))
;
}

3.去除所有的空格

 void trimStrSpace(char *str)
{
char *t = str;
while(*str)
{
if(*str != ' ')
*t++ = *str;
str++;
}
*t='\0';
}

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

 char* charremove(char *p)
{
char *t = p;
char *q = p;
while(*t)
{
if(*t != ' ' && *t != '\t')
//去除某段字符串中的任意字符
*p++ = *t;
t++;
}
*p = '\0';
return q;
}

二.字符串的翻转

方案1:

 void reverse(char *str)
{
char *start = str;
char *end = start + strlen(str)-1;
while(start < end)
{
*start = *start ^*end;
*end = *start ^*end;
*start = *start ^*end;
start++;
end--;
}
}

方案2:

 void reverse(char *str,char*buf)
{
if(*str == '\0')
return;
reverse(str+1,buf);
strncat(buf,str,1);
}

三.随机字符串的生成

 string generatestring()
{
string str1;
string str("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890");
int c = (rand()%62);
cout<<c<<endl;
//打印生成字符串中的字符个数
for(int i = 0;i < c;i++)
{
int d = rand()%62;
str1 += str[d];
}
return str1;
}

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

 #include <iostream>
#include<vector>
#include<algorithm>
#include<time.h>
using namespace std; string generatestring()
{
string str1;
string str("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890");
int c = (rand()%62);
cout<<c<<endl;
for(int i = 0;i < c;i++)
{
int d = rand()%62;
str1 += str[d];
}
return str1;
} bool cmp(string a, string b)
{
return a < b;
} int main()
{
srand(time(NULL));
string str1,str2;
vector<string> vec(10);
generate(vec.begin(),vec.end(),[](){return generatestring();});
sort(vec.begin(),vec.end(),cmp);
for(string it:vec)
cout<<it<<"\n";
return 0;
}

查看代码

(C/C++学习)14.C语言字符串处理函数(二)的更多相关文章

  1. (C/C++学习)13.C语言字符串处理函数(一)

    说明:字符串处理的函数很多,本文将例举经常遇到的一些函数加以说明. 一.字符串的输入输出 头文件:<stdio.h> 1.利用标准输出函数 printf() 来输出,将格式设置为 s% . ...

  2. 转:C语言字符串操作函数 - strcpy、strcmp、strcat、反转、回文

    转自:C语言字符串操作函数 - strcpy.strcmp.strcat.反转.回文 C++常用库函数atoi,itoa,strcpy,strcmp的实现 作者:jcsu C语言字符串操作函数 1. ...

  3. Strsafe.h:更安全的C语言字符串处理函数

    原文出处:Strsafe.h: Safer String Handling in C 作者:Michael Howard 编译:王凌峰 在微软公司举行的Microsoft Windows Securi ...

  4. C语言字符串操作函数 - strcpy、strcmp、strcat、反转、回文

    原文:http://www.cnblogs.com/JCSU/articles/1305401.html C语言字符串操作函数 1. 字符串反转 - strRev2. 字符串复制 - strcpy3. ...

  5. C语言字符串操作函数整理

    整理C语言字符串相关的函数,以程序方式验证,以注释方式做说明. #include<stdio.h> #include<string.h> #include<stdlib. ...

  6. C语言字符串操作函数

    1.函数名: stpcpy  功  能: 拷贝一个字符串到另一个  用  法: char *stpcpy(char *destin, char *source);  程序例: #include < ...

  7. C语言 字符串处理函数 转自 http://blog.chinaunix.net/uid-25885064-id-3175049.html

     C字符串处理函数 2012-04-13 18:14:16 分类: C/C++ void *memccpy (void *dest, const void *src, int c, size_t n) ...

  8. C++语言字符串处理函数

    C++语言提供了比C语言更丰富的字符串处理功能.它可以在字符串上经行输入,输出,合并,修改,比较,转换,复制,搜索等操作.使用这些现成的功能可以大大减少我们的编程的负担. 输入和输出的字符串函数,如p ...

  9. C语言字符串处理函数

    函数名: strcpy  功  能: 拷贝一个字符串到另一个  用  法: char *stpcpy(char *destin, char *source);  程序例:  #include < ...

随机推荐

  1. 视频生成 量产 win 转 linux ffmpeg linux 安装 对批量视频的尽可能短时间生成

    环境准备 Welcome to aliyun Elastic Compute Service! [root@mytest ~]# pip install baidu-aip Looking in in ...

  2. the largest value you actually can transmit between the client and server is determined by the amount of available memory and the size of the communications buffers.

    the largest value you actually can transmit between the client and server is determined by the amoun ...

  3. BS与CS的联系与区别。

    C/S是Client/Server的缩写.服务器通常采用高性能的PC.工作站或小型机,并采用大型数据库系统,如Oracle.Sybase.Informix或 SQL Server.客户端需要安装专用的 ...

  4. CDN域名集合

    akamai-staging.net akamaized.net akamai.net cloudfront.net amazonaws.com azioncdn.net cachefly.net c ...

  5. bzoj 1702: [Usaco2007 Mar]Gold Balanced Lineup 平衡的队列【hash】

    我%&&--&()&%????? 双模hashWA,unsigned long longAC,而且必须判断hash出来的数不能为0???? 我可能学了假的hash 这个 ...

  6. 基于.Net Core的API框架的搭建(4)

    6.加入日志功能 日志我们选用log4net,首先引入程序包: 选择2.0.8版本安装.然后在项目根目录新增log4net的配置文件log4net.config: <?xml version=& ...

  7. php insteadof 作用

    PHP5的另一个新成员是instdnceof关键字.使用这个关键字可以确定一个对象是类的实例.类的子类,还是实现了某个特定接口,并进行相应的操作.在某些情况下,我们希望确定某个类是否特定的类型,或者是 ...

  8. 【NOI2012】魔幻棋盘

    Description 将要读二年级的小 Q 买了一款新型益智玩具——魔幻棋盘,它是一个N行M列的网格棋盘,每个格子中均有一个正整数.棋盘守护者在棋盘的第X行Y列(行与列均从1开始编号) 并且始终不会 ...

  9. ACM_Fibonacci数(同余)

    Fibonacci数 Time Limit: 2000/1000ms (Java/Others) Problem Description: 斐波那契数列定义如下:f(0)=0,f(1)=1,f(n+2 ...

  10. 全面学习ORACLE Scheduler特性(2)管理jobs

    1.2  管理Jobs 1.2.1  启用Jobs 前面创建JOB时,由于未显式的指定ENABLED参数,因此即使指定了START_DATE,不过默认情况下JOB不会自动执行.对于这种情况,DBMS_ ...