常用C/C++ 字符串处理总结

1.基础函数

输入输出:cin,cout,getchar,gets,putchar,puts,printf,scanf
格式化: sprintf,sprintf_s,wsprintf,wsprintf_s,swprintf,swprintf_s  (请仔细比较这几组函数的区别)
格式化值:
  • %% -返回百分号
  • %b –返回二进制数
  • %c –返回与ASCII值相对应的字符
  • %d –带有正负号的十进制数
  • %e –科学计数符号(如:1.2e+2)
  • %u –不带正负号的十进制数.%ul 不带符号的长整型
  • %f – 浮点数据(本地设置)
  • %F –浮点数据(非本地设置)
  • %o –八进制数
  • %s –字符串
  • %x –十六进制数(小写字母) 例如:sprintf(s, "%#010x", 128); //产生"0x00000080"
  • %X –十六进制数(大写字母)
char*字符串处理:strlen,strcpy,strcat,strcmp

2.进阶函数

char*字符串处理:
  • char * strchar(const char * s, int c) ;返回指向字符串s中字符c首次出现的指针,没有返回NULL
  • char * strrchar(const char * s, int c) ;返回指向字符串s中字符c最后一次出现的指针,没有返回NULL 
  • char * strstr(const char * s1, const char * s2) ;返回指向字符串s1中首次出现s2位置的指针,无返回NULL
  • size_t strspn(const char * s1, const char * s2) ;返回s1中只包含s2中字符的起始段的长度
  • size_t strcspn(const char * s1, const char * s2) ;返回s1中不包含s2中字符的起始段的长度
  • char * strpbrk(const char * s1, const char * s2) ;返回指向s1中首次出现s2中字符位置的指针,没有返回NULL
  • char * strtok(char * s1, const char * s2) 将s1用s2中包含的字符分开记号拆散为字符串。(注意:strtok会修改输入的字符串,故请拷贝后再调用。)
  • char *strsep(char **stringp, const char *delim) 同上,分隔字符串,用法类似
string字符串处理:
  • 长度:str.length()
  • 尺寸:str.size()
  • 比较:str1.compare(str2)
  • 连接:str1+=str2
  • 连接:str1.append(str2)
  • 提取:str2=str2.substr(pos1)
  • 查找:pos=str1.find(str2)
  • 插入:str1.insert(pos1,str2);
  • 替换:str1.replace(pos1,str2);
  • 删除:str1.erase(pos,len)
  • 清除:str.clear()
字符串转数字:
  • atoi(将字符串转换成整型数)
  • atof(将字符串转换成浮点型数) 
  • atol(将字符串转换成长整型数)
  • strtod(将字符串转换成双精度浮点数)
  • strtol(将字符串转换成长整型数)
  • strtoul(将字符串转换成无符号长整型数) 
字符判断:
  • isalnum:Check if character is alphanumeric (function)
  • isalpha :Check if character is alphabetic (function)
  • iscntrl :Check if character is a control character (function)
  • isdigit :Check if character is decimal digit (function)
  • isgraph :Check if character has graphical representation (function )
  • islower :Check if character is lowercase letter (function)
  • isprint :Check if character is printable (function)
  • ispunct :Check if character is a punctuation character (function)
  • isspace :Check if character is a white-space (function )--空白字符:新行符\n, 空格,回车''\r",水平制表符"\t", 垂直制表符"\v"
  • isupper :Check if character is uppercase letter (function)
  • isxdigit :Check if character is hexadecimal digit (function)
  • tolower:Convert uppercase letter to lowercase (function)
  • toupper:Convert lowercase letter to uppercase (function)
内存操作:
  • void * memcpy(void * s1, const void * s2, size_t n) ; 将s2中连续n个字节的数据拷贝到s1中 ,注意s1和s2内存区域不能重叠
  • void * memmve(void * s1, const void * s2, size_t n) ; 将s2中连续n个字节的数据拷贝到s1中 ,但s1和s2内存区域可以重叠
  • int memcmp(const void * s1, const void * s2, size_t n) ; 比较内存区域s1和s2的前n个字节,<、=、>分别返回负值、0、正值。
  • void * memchr(const void * s, int c, size_t n) ; 返回指向s1对象的前n个字节查找出现c的位置的指针,没有返回NULL
  • void * memset(void * s, int c, size_t n) ; 将c拷贝到s1中的前n个字节中,常用于字符串初始化,初始化也可以写char *str={0}
格式转换:
  • char*到string:可以直接赋值
  • string转char*:str.c_str()

  • char*和wchar_t*互转:比较复杂,综合运用多种函数,总之微软的不标准的东西用着就是不爽,下面有个摘自网络的代码

#include<Windows.h>
#include<tchar.h>
#include<stdio.h>
 
char* WcharToChar(const wchar_t* wp)  
{  
    char *m_char;
    int len= WideCharToMultiByte(CP_ACP,0,wp,wcslen(wp),NULL,0,NULL,NULL);  
    m_char=new char[len+1];  
    WideCharToMultiByte(CP_ACP,0,wp,wcslen(wp),m_char,len,NULL,NULL);  
    m_char[len]='\0';  
    return m_char;  
}  
wchar_t* CharToWchar(const char* c)  
{  
   wchar_t *m_wchar;
    int len = MultiByteToWideChar(CP_ACP,0,c,strlen(c),NULL,0);  
    m_wchar=new wchar_t[len+1];  
    MultiByteToWideChar(CP_ACP,0,c,strlen(c),m_wchar,len);  
    m_wchar[len]='\0';  
    return m_wchar;  
}  

小结

以上的函数都在string.h string stdio.h stdlib.h等头文件里面,用的时候可以再查
尽量使用c/c++标准库里面的函数吧,微软的那些不标准的东西真心看着烦,不推荐用,如果是做qt,cocos2d等第三方框架的开发,建议用那个框架自己封装的字符串类来操作。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值