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

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

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. Analyzing with SonarScanner for MSBuild

    https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+MSBuild Features The So ...

  2. iOS 证书详解

    引言 关于开发证书配置(Certificates & Identifiers & Provisioning Profiles),相信做iOS开发的同学没少被折腾.对于一个iOS开发小白 ...

  3. hdu 6035(树形dp)

    题意:给你棵树,树上每个节点都有颜色,每条路径上有m种颜色  问你所有路径上出现的颜色的和 思路:答案求的是每种颜色对路径的贡献  我们可以反过来每种颜色不经过的路径的条数 假设根节点的颜色为x  我 ...

  4. 【NOI 2007】 社交网络

    [题目链接] 点击打开链接 [算法] 首先,跑floyd,计算最短路和最短路径数 然后,计算答案,枚举k,s,t,若dist[s][k] + dist[k][t] = dist[s][t], 那么,点 ...

  5. ODP.NET Managed 相关文章收集

      一.Oracle 对.net支持的一些基础知识了解介绍. 1.早年的时候,微软自己做的有 System.Data.OracleClient. 现在已经成了过期类了.性能等都不是很好. 2.Orac ...

  6. Android 属性系统 Property service 设定分析 (转载)

    转自:http://blog.csdn.net/andyhuabing/article/details/7381879 Android 属性系统 Property service 设定分析 在Wind ...

  7. SVN请求认证信息

    WIN10:C:\Users\Home目录\AppData\Roaming\Subversion Window Server 系统:C:\Users\Home目录\AppData\Roaming\Su ...

  8. $割点割顶tarjan$

    原题 #include <bits/stdc++.h> using namespace std; typedef long long LL; inline LL read () { LL ...

  9. GIT学习之路第一天 简介及其安装

    本文参考廖雪峰老师的博客进行总结,完整学习请转廖雪峰博客 Git是什么? Git是目前世界上最先进的分布式版本控制系统(没有之一). Git有什么特点?简单来说就是:高端大气上档次! 那什么是版本控制 ...

  10. Spring-security自定义过滤器

    定义过滤器 public class TokenAuthenticationFilter extends AbstractPreAuthenticatedProcessingFilter { publ ...