C风格的字符串就是以0结尾的字符数组。通过cstring头文件,可以引入一系列的字符串运算函数,以完成字符串比较、拼接、复制等操作。
版权声明
本文可以在互联网上自由转载,但必须:注明出处(作者:海洋饼干叔叔)并包含指向本页面的链接。
本文不可以以纸质出版为目的进行改编、摘抄。
请见如下示例:
1 | //Project - StringOperation |
上述代码的执行结果为:
1 | s1 = Hello, len = 5 |
🚩第7行:strlen(s1)函数返回s1字符串包含的字符个数,其返回类型为size_t,在作者的计算机上,size_t即unsigned long long类型。其输出结果可知,该函数返回的是实际字符个数,而不是s1数组的内存大小。strlen的函数名来自英文string length。
🚩第10行:strcmp(s1,s2)函数将字符串s1和s2作比较,其返回类型为int。如果s1 > s2,返回 > 0的整数,如果s1 < s2,返回 < 0的整数,如果两者相等,返回0。所谓字符串比较,事实上是从前到后进行字符的逐一比较,而字符的比较,即比较字符的ASCII码值。由于’H’的ASCII码值 < ‘W’,所以s1 < s2,本例中该函数返回了-1,见执行结果的第2行。strcmp的函数名来自英文string comparison。
🚩第13 ~ 14行:strcat(s1,s2)函数将s2字符串附加在s1字符串的后面。同样基于执行速度的考虑,该函数不会对s1数组的空间进行越界检查,保证s1数组的剩余空间足够容纳s2的内容,是程序员的职责。C语言中的数组,其存储空间的大小是在定义时确定的,无法在执行过程中被改变。strcat的函数名来自英文string concatenation。
🚩第15行:strcpy(s3,s1)函数将字符串s1的内容复制到字符串s3。复制过程中,s3的原内容会被覆盖。同样,程序员需要自行确保s3的空间足够大。strcpy的函数名来自英文string copy。