字符串常见操作
2016-02-21 15:12
656 查看
1.strcpy(p, p1) 复制字符串
原型:char* strcpy(char* des,const char* source);功能:将字符串source拷贝到字符串des中 ,copy完后返回目标串地址
例程:
#include <iostream> #include <cstring> using namespace std; int main() { char str1[10] = "TsinghuaK"; char str2[10] = "Computer"; cout <<strcpy(str1,str2)<<endl; return 0; }
运行结果是:Computer
第二个字符串将覆盖掉第一个字符串的所有内容!
注意:在定义数组时,字符数组1的字符串长度必须大于或等于字符串2的字符串长度。不能用赋值语句将一个字符串常量或字符数组直接赋给一个字符数组。所有字符串处理函数都包含在头文件string.h中。
2.strncpy(p, p1, n) 复制指定长度字符串
原型:char* strncpy(char* dest,char* src,size_tn);功能:strncpy:将字符串src中前size_tn个字符拷贝到字符串dest中。
例程:
#include <iostream> #include <cstring> using namespace std; int main() { char str1[10] = "Tsinghua"; char str2[10] = "Computer"; cout <<strncpy(str1,str2,3)<<endl; return 0; }
运行结果:Comnghua
注意:字符串src中前size_tn个字符将覆盖掉字符串dest中前size_tn个字符!
3.strcat(p, p1) 附加字符串
原型:char *strcat(char *dest,char *src);功能:将字符串src接到字符串dest的后面 。
例程:
#include <iostream> #include <cstring> using namespace std; int main() { char str1[] = "Tsinghua"; char str2[] = "Computer"; cout <<strcat(str1,str2)<<endl; return 0; }
运行结果:TsinghuaComputer
注意:连接后新字符串的长度为两个字符串长度之和。进行字符串连接后,字符串1的结尾符将自动被去掉,在结尾串末尾保留新字符串后面一个结尾符。
4.strncat(p, p1, n) 附加指定长度字符串
原型:char strncat(char dest,char * source,size_tn);功能:将字符串source的前size_tn个字符接到字符串dest的后面。
#include <iostream> #include <cstring> using namespace std; int main() { char str1[] = "Tsinghua"; char str2[] = "Computer"; cout <<strncat(str1,str2,3)<<endl; return 0; }
运行结果:TsinghuaCom
5.strlen(p) 取字符串长度
原型:unsigned int strlen(char *s);功能:统计字符串s中字符的个数
例程:
#include <iostream> #include <cstring> using namespace std; int main() { char str[100]; cout <<"请输入一个字符串:"; cin >>str; cout <<"The length of the string is :"<<strlen(str)<<"个"<<endl; return 0; }
运行结果The length of the string is x 个(x为你输入的字符总数字)
注意:strlen函数的功能是计算字符串的实际长度,不包括’\0’在内。另外,strlen函数也可以直接测试字符串常量的长度,如:strlen(“Welcome”)。
6.strcmp(p, p1) 比较字符串
原型:int strcmp(const char *s1,const char *s2);功能:比较两个字符串s1和s2。
例程:
#include <iostream> #include <cstring> using namespace std; int main() { char buf1[] = "aaa"; char buf2[] = "bbb"; char buf3[] = "ccc"; int ptr; ptr = strcmp(buf2,buf1); if(ptr > 0) cout <<"Buffer 2 is greater than buffer 1"<<endl; else cout <<"Buffer 2 is less than buffer 1"<<endl; ptr = strcmp(buf2,buf3); if(ptr > 0) cout << "Buffer 2 is greater than buffer 3" <<endl; else cout <<"Buffer 2 is less than buffer 3"<<endl; return 0; }
运行结果是:
Buffer 2 is less than buffer 1
Buffer 2 is greater than buffer 3
7.strncmp(p, p1, n) 比较指定长度字符串
原型:int strncmp ( const char * str1, const char * str2, size_t num );功能:比较字符串string1和string2大小,只比较前面count个字符. 比较过程中, 任何一个字符串的长度小于count, 则count将被较短的字符串的长度取代. 此时如果两串前面的字符都相等, 则较短的串要小.
返回值< 0, 表示string1的子串小于string2的子串;
返回值为0, 表示string1的子串等于string2的子串;
返回值> 0, 表示string1的子串大于string2的子串.
例程:
#include <iostream> #include <cstring> using namespace std; int main() { char buf1[] = "xiandianzi"; char buf2[] = "hangzhoudianzi"; char buf3[] = "hangdianzi"; int ptr; ptr = strncmp(buf2,buf1,3); if(ptr > 0) cout <<"Buffer 2 is greater than buffer 1"<<endl; else cout <<"Buffer 2 is less than buffer 1"<<endl; ptr = strncmp(buf2,buf3,5); if(ptr > 0) cout << "Buffer 2 is greater than buffer 3" <<endl; else cout <<"Buffer 2 is less than buffer 3"<<endl; return 0; }
结果:
8.strchr(p, c) 在字符串中查找指定字符
原型:char *strchr(const char *s,char c);功能:查找字符串s中首次出现字符c的位置。
例程:
#include <iostream> #include <cstring> using namespace std; int main() { char string[17] = "Thisisastring"; char *ptr,c='r'; ptr=strchr(string,c); if(ptr) printf("The character %c is at position:%s\n",c,ptr); else printf("The character was not found\n"); return 0; }
结果:
注意:strchr返回的是首次出现字符c的剩余字符串
9.strstr(p, p1) 查找字符串
原型:char *strstr(char *str1, const char *str2);str1:被查找目标
str2:查找对象
功能:用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。
例程:
#include <iostream> #include <cstring> using namespace std; int main() { char str[]="1234xyz"; char *str1=strstr(str,"34"); cout << str1 << endl; return 0; }
结果:34xyz
相关文章推荐
- C#关于HttpClient的统一配置(一)
- 很多人建立独立的个人网站无外乎赚钱
- HM Fast Learning
- 从事了8年的互联网
- PAT1028人口普查
- Windows 8.1内置微软五笔输入法
- 我们谈到投资时最容易想到的就是金钱
- 数位DP 题集
- OpenCV实践之路——ImageWatch的安装使用
- Core Animation一些Demo总结 (动态切换图片、大转盘、图片折叠、进度条等动画效果)
- Binary Tree Level Order Traversal I II(102、107)
- Redis与Memcached的区别
- 思维导图学习小结
- netfilter
- Xcode7之后简单的真机测试
- Genymotion+VirtualBox详解—目录结构,路径更改,重新加载已存在的模拟器
- c++primer阅读笔记之关联容器学习
- JavaScript实现AJAX的拖动效果
- 判断访问者的浏览器是否支持JavaScript和Cookies
- 设计模式---状态模式