常用C/C++ 字符串处理总结
来源:互联网 发布:小区信息发布查询软件 编辑:程序博客网 时间:2024/06/16 06:29
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) 同上,分隔字符串,用法类似
- 长度: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等第三方框架的开发,建议用那个框架自己封装的字符串类来操作。
0 0
- C字符串处理常用函数总结
- [总结] C字符串常用处理函数
- 常用C/C++ 字符串处理总结
- c语言字符串处理的常用库函数总结
- C字符串常用处理函数
- C字符串常用处理函数
- C字符串常用操作处理
- C常用字符串处理函数
- c常用字符串处理函数
- C/C++ 字符串处理总结
- 字符串处理C函数总结
- linux c常用字符串处理函数( 1 )
- linux c常用字符串处理函数( 2 )
- C语言常用字符串处理函数
- linux c常用字符串处理函数
- C中常用字符串处理函数
- C/C++常用的字符串处理函数
- (C语言)常用字符串处理函数
- NYOJ 73 比大小
- C: 局部变量、全局变量初始化问题
- C:四舍五入
- andengine load texture
- 在VisualStudio中使用GIT
- 常用C/C++ 字符串处理总结
- Android-/dev/hidraw0 设备文件创建
- 大数据平台搭建笔记
- 互联网公司做智能硬件的十大坑
- linux进程间通信--信号
- EditText讲解
- C++ STL--stack/queue 的使用方法
- 集群与分布式的区别
- [Java]读取文件方法大全