1.#include<string.h>中的常用函数
1.strcat
(1)一般形式:strcat(字符串1,字符串2)
(2)功能:将字符串2拼接到字符串1之后
(3)函数声明:char *strcat(char *dest, const char *src)
(4)几点说明:
当字符串1中间有\0时,strcat会把字符串2拼接到第一个\0后面,得到的字符串1输出时,遇到\0停止
自己用strcat时,遇到了这种情况:
char a[100] = "123", b[] = "456";
strcat(a, b);
错误C4996 'strcat':
This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.
我的vs不让我用strcat!不管我的a数组有多大,就是不让我用!
(包括下面的strcpy等,都不让我用,让我换成strcpy_s来用)
但是它允许我用strcat_s,而且这个函数更加安全,不会出现a数组接上b之后爆掉的情况
对于strcat_s,有以下几点:
- strcat_s是为了解决字符串拼接溢出在VS2005之后引进的更具安全性的函数。
- strcat_s本身保留了两个变量strcat的特性,即可以使用两个参数的函数原型。如stract_s(str1,str2);将str2拼接到str1后。
- strcat_s新增三个参数的函数原型,如strcat_s(str1,sizeof(str1),str2)。超出范围会有断言。
2.strcmp与strncmp
(1)一般形式:
- strcmp(字符串1,字符串2)
- strncmp(字符串1,字符串2,n)
(2)功能:
- strcmp:比较字符串s1和s2
- strncmp:比较字符串s1和s2的前n位
(3)函数声明:strcmp(const char *s1,const char * s2)
(4)几点说明:
- 当s1<s2时,返回为负数 注意不是-1
- 当s1=s2时,返回值为0
- 当s1>s2时,返回正数 注意不是1
- 即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。如:
"A"<"B" "a">"A" "computer">"compare"
- 特别注意:strcmp只能比较字符串,不能比较数字等其他形式的参数。
- ps:可以用来排字典序
具体见之前的总结
https://www.cnblogs.com/NKHTH/p/14332594.html
3.strcpy与strncpy
(1)一般形式:
- strcpy(字符串1,字符串2)
- strncpy(字符串1,字符串2,n)
(2)功能:
- strcpy:将字符串2的内容拷贝到字符串1里
- strncpy:将字符串2的前n位拷贝到字符串1里
(3)函数声明:char *strcpy(char *destin, char *source);
(4)几点说明:
不知道是怎么回事,自己的vs用这两个函数,并不是只将字符串2前n位覆盖字符串1的前n位,而是直接全覆盖
如:
char str[10] = "abcdef", str1[10] = "12345";
strncpy_s(str, str1, 3);
cout << str;
结果为123
4.erase
(1)一般形式;
- str.erase(pos,n);
- str.erase(position);
- str.erase(first,last);
(2)功能:(与1中的一一对应)
- 删除从下标pos开始的n个字符,比如erase(0,1)就是删除第一个字符
- 删除postion处的一个字符(position是一个string类型的迭代器)
- 删除从first到last之间的字符(first和last都是迭代器)
(3)函数声明:
- basic_string & erase(size_type pos=0, size_type n=npos);
即从给定起始位置pos处开始删除, 要删除字符的长度为n, 返回值修改后的string对象引用
2. iterator erase(const_iterator position)
删除迭代器[first, last)区间的所有字符,返回一个指向被删除的最后一个元素的下一个字符的迭代器.
3. iterator erase(const_iterator first, const_iterator last)
(4)几点说明:
5.