(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 < ...
随机推荐
- Delphi7目录结构
Delphi7目录结构 打开Delphi的安装目录,如C:\Program Files\Borland\Delphi7,你将会看到目录下包含了一些文件和文件夹:Source:存放的是Delpi提供的所 ...
- 获得了Root权限后Read-only file system
获得了Root权限后,adb shell进入文件系统,有时仍然不能对系统文件夹进行写操作,典型的如删除/system/app下的Apk, 例如系统报:rm failed for xxx.apk, Re ...
- android 制作9.png图片
什么叫.9.PNG呢,这是安卓开发里面的一种特殊的图片 这种格式的图片在android 环境下具有自适应调节大小的能力. (1)允许开发人员定义可扩展区域,当需要延伸图片以填充比图片本身更大区 ...
- codeforces 963B Destruction of a Tree
B. Destruction of a Tree time limit per test 1 second memory limit per test 256 megabytes input stan ...
- 【NOI 2007】 社交网络
[题目链接] 点击打开链接 [算法] 首先,跑floyd,计算最短路和最短路径数 然后,计算答案,枚举k,s,t,若dist[s][k] + dist[k][t] = dist[s][t], 那么,点 ...
- Visual Studio Code 扩展工具集,记录
编码 提高效率及校验 Auto Close Tag 自动闭合标签 Auto Rename Tag 自动更改HTML/XML标签,不需要再进行二次修改,减少50%的工作量! Path Intellise ...
- 289 Game of Life 生命的游戏
假设有一个大小为m*n的板子,有m行,n列个细胞.每个细胞有一个初始的状态,死亡或者存活.每个细胞和它的邻居(垂直,水平以及对角线).互动规则如下:1.当前细胞存活时,周围低于2个存活细胞时,该细胞死 ...
- SQL在一张表中根据父ID获取所有的子ID
with a as ( select id,name,parentid from categories where id=53 union all select x.id,x.name,x.paren ...
- Winform学习知识汇总
引用博客 http://www.cnblogs.com/peterzb/archive/2009/06/14/1502918.html
- 【PostgreSQL-9.6.3】LOG: unrecognized configuration parameter "dynamic_shared_memory_type"
报错如下: 输入如下命令启动PG数据库时,报错: [postgres@drz ~]$ pg_ctl -D /opt/postgresql/data/ start server starting FAT ...