最近写代码发现对于字符串的处理有很多函数都不会使用,想借此来巩固和分享一些要注意的。
开始也是最重要的,使用字符串函数需要加上头文件 #include
定义字符串的相关的需要注意的地方已经在之前的文章中提到过(后续还会增加关于指针定义的方法)
目录
strlen() : 获取一个字符串的长度
其它求字符串长度函数
length()函数
size()函数
strlen()函数
strcmp(str1,str2):判断字符串str1和str2是否相同
如果str1和str2相同,则返回值为0
如果str1大于str2,则返回值为1
如果str1小于str2,则返回值为-1
strcat(str1,str2):字符串连接函数
strcpy(str1,str2):字符串复制函数
strlen() : 获取一个字符串的长度
需要注意的问题是它的使用方法
其它求字符串长度函数
length()函数
char a[]="asdfg";
printf("%d",a.strlen());
char a[]="asdfg";
printf("%d",a.strlen());
这个就是和C++中的length()函数搞混了。在C++中是需要声明string型变量,才可以用length()函数来进行求长度,如:
string str = "abcdef";
printf("%d", str.length());
运行结果就是
6
要注意的是这里是不会包括结束字符‘ ’
但是如果这样写
char s[] = "asdfghjkl";
printf("%d", s.length());
就会报错,所以需要注意函数的用法。
size()函数
然后要补充的是size()函数,同样也可以求字符串的长度,不过也只能求string声明变量的函数,如:
string s= "asdfghjkl";
printf("%dn", s.size());
运行结果就是:
9
同样也没有包含结束符‘ ’
除此之外还可以求用vector定义的数组的长度
vectorm = {1,2,3,4,5}; printf("%d", m.size());
结果是
5
strlen()函数
我们再回到正题strlen()函数的用法
strlen(字符串名称)
这个函数只适用于数组求长度,string类型定义的函数则不适用,如:
char a[] = "123456";
printf("%d", strlen(a));
输出结果为
6
而如果这样定义:
string b = "qwertt";
printf("%d", strlen(b));
语法就有错误
所以计算字符串长度一定要选择正确的计算长度的方法。
strcmp(str1,str2):判断字符串str1和str2是否相同
需要注意的是在C语言中不可直接使用 (不过现在很多编译器都有改进,比如vs2022这样的语法可以允许)
str1==str2
判断两个字符串是否相同应使用函数strcmp(str1,str2)
如果str1和str2相同,则返回值为0
char str1[] = "abcdef";
char str2[] = "abcdef";
printf("%d", strcmp(str1, str2));
输出结果为:
如果str1大于str2,则返回值为1
char str1[] = "abcdefg";
char str2[] = "abcdef";
printf("%d", strcmp(str1, str2));
输出结果为:
要注意的是这里比较的不是字符串的长度,而是一一比较每个字母的ASCⅡ码,比如:
char str1[] = "g";
char str2[] = "abcdef";
printf("%d", strcmp(str1, str2));
输出结果为:
这是因为g的ASCⅡ码的值大于a,所以str1>str2
如果str1小于str2,则返回值为-1
同样是一一比较每个字母的ASCⅡ码如:
char str1[] = "abcdef";
char str2[] = "g";
printf("%d", strcmp(str1, str2));
输出结果为:
strcat(str1,str2):字符串连接函数
将str2连接到字符串str1后面,如:
char a[100] = "hello ";
char b[] = "world";
strcat(a, b);
printf("%s", a);
输出结果为:
注意要保证str1有足够的空间来存储str2,否则会出现溢出报错。如:
a只能容纳6个元素,而a和b一起有11个元素,所以会报错。
strcpy(str1,str2):字符串复制函数
将str2的内容赋值给str1,如:
char a[] = "hello ";
char b[] = "Ni Hao";
strcpy(a, b);
printf("%s", a);
return 0;
输出结果为:
当然这个也要注意str1的长度可以容纳下str2,否则也会报错,如:
a只能容纳5个元素,而b有6个元素,所以会报错。
上面的几个函数strlen(str),strcmp(str1,str2),strcpy(str1,str2)都只能适用于C语言中的字符数组,C++中的string类型都不适用。当然C++中string类型的方法也更加灵活。



