(C/C++学习)14.C语言字符串处理函数(二)
说明:上节着重解释了字符串处理的库函数处理,这节将针对一些常用的需求,进行非库函数的处理。
一.去除某一个字符串中的某个字符
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语言字符串处理函数(二)的更多相关文章
- (C/C++学习)13.C语言字符串处理函数(一)
说明:字符串处理的函数很多,本文将例举经常遇到的一些函数加以说明. 一.字符串的输入输出 头文件:<stdio.h> 1.利用标准输出函数 printf() 来输出,将格式设置为 s% . ...
- 转:C语言字符串操作函数 - strcpy、strcmp、strcat、反转、回文
转自:C语言字符串操作函数 - strcpy.strcmp.strcat.反转.回文 C++常用库函数atoi,itoa,strcpy,strcmp的实现 作者:jcsu C语言字符串操作函数 1. ...
- Strsafe.h:更安全的C语言字符串处理函数
原文出处:Strsafe.h: Safer String Handling in C 作者:Michael Howard 编译:王凌峰 在微软公司举行的Microsoft Windows Securi ...
- C语言字符串操作函数 - strcpy、strcmp、strcat、反转、回文
原文:http://www.cnblogs.com/JCSU/articles/1305401.html C语言字符串操作函数 1. 字符串反转 - strRev2. 字符串复制 - strcpy3. ...
- C语言字符串操作函数整理
整理C语言字符串相关的函数,以程序方式验证,以注释方式做说明. #include<stdio.h> #include<string.h> #include<stdlib. ...
- C语言字符串操作函数
1.函数名: stpcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char *source); 程序例: #include < ...
- 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) ...
- C++语言字符串处理函数
C++语言提供了比C语言更丰富的字符串处理功能.它可以在字符串上经行输入,输出,合并,修改,比较,转换,复制,搜索等操作.使用这些现成的功能可以大大减少我们的编程的负担. 输入和输出的字符串函数,如p ...
- C语言字符串处理函数
函数名: strcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char *source); 程序例: #include < ...
随机推荐
- 第二次PHP面试题
昨天下午翘班去参加了人生中第二次PHP面试.是一家相对第一家更加专业的互联网公司.效果不如第一家理想,笔试题有点难,而且偏高理论,面试时面试官也还不错,一起探讨,可是他的问题我还是很多都不知道,果然是 ...
- 说说循环与闭包——《你不知道的JS》读书笔记(一)
什么是闭包 <你不知道的JS>里有对闭包的定义:"当函数可以记住并访问所在的词法作用域,即使函数是在当前作用域之外执行,这就产生了闭包." 讲闭包是啥的太多了...就一 ...
- zabbix如何添加主机监控
1,首先,监控的主机安装zabbix客户端.zabbix提供多种监控方式,我们这里监控的主机上边安装agentd守护端进行数据收集并监测. 其中客户端安装我们这里就不介绍了,请参考之前教程里边的客户端 ...
- presentModalViewController和dismissModalViewControllerAnimated的使用总结
在实际开发中,如果要弹出视图: 我们常用到presentModalViewController方法和dismissModalViewControllerAnimated方法. presentModal ...
- HTTP权威指南阅读记录 - 第一章
最近终于开始看<HTTP权威指南>了,第一章主要是简介一些基本的概念.下面列出一些常用,但还不是很了解的简单概念. 一.常见概念: 1.媒体类型 因特网上有数千种不同的数据类型,HTTP仔 ...
- luence优化速度
一. .索引优化背景 很多网站都有自己的搜索引擎,比如百度,搜狗等等,而他们每天添加的索引量可想而知多么庞大,所以为了能提升用户的搜索响应速度,好的优化方案必不可少:当然对于一些网站的站内搜索也很有必 ...
- CMake使用总结
总结CMake的常用命令,并介绍有用的CMake资源. CMake意为cross-platform make,可用于管理c/c++工程.CMake解析配置文件CMakeLists.txt生成Makef ...
- Tomcat + solr5.2.1环境搭建
1. 下载solr并解压后的目录为:E:\solr-5.2.1 , http://lucene.apache.org/solr/downloads.html 2. 将solr部署到Tomcat中 ...
- bzoj 1709: [Usaco2007 Oct]Super Paintball超级弹珠【枚举】
k是1e5范围的,吗? 注意到n只有100,这意味着k去重之后之后n^2,也就是1e4! 然后就可以愉快的n^4枚举了,枚举每个格子,再枚举每个敌人,如果当前格子射不到敌人则退出,否则满足所有敌人则a ...
- js 获取图片宽高 和 图片大小
获取要查看大小的img var img_url = 'http://img5.imgtn.bdimg.com/it/u=4267222417,1017407570&fm=200&gp= ...