常用字符串函数梳理

strlen()—获取字符串长度

函数原型:

1
2
size_t strlen(const char *str); 
// 用const修饰char *str保证传入函数的字符串不会被改变;

 size_t是定义在”stddef.h”头文件中的数据类型。其在32位架构中相当于unsigned int,而在64位架构中为unsigned long。这种随操作系统架构而改变的数据类型增强了程序的跨平台移植性。更多有关size_t内容请参考Jeremy

用例:

1
2
char str[] = "Hello World!";
cout << strlen(str) << endl; // str长度为12

strcpy()—字符串的复制

函数原型:

1
char *strcpy(char *strTo, char *strFrom);

  strcpy()的返回值是指向一个某个字符数组首元素的指针,经过测试,这个指针所指的字符串就是上述参数列表中的strTo。

用例:

1
2
3
4
5
6
char str1[] = "Hello World!";
char str2[strlen(str1)];
strcpy(str2, str1);
cout << str2 << endl; // str2 = "Hello World!";
// or
cout << strcpy(str2, str1) << endl; // 打印str2的内容

strcmp()—字符串的比较

函数原型:

1
int strcmp(const char *str1, const char *str2);

  strcmp()的工作原理为:从两个字符串的首个字符开始,逐位比对其ASCII码值。若前者大于后者则返回1并结束比较,否则返回-1并结束比较;若二者相等,则继续比较下一个。若二者长度相等且两个字符串所有对位都相同,则返回0(如:”abc”和”abc”)。若二者长度不相等,但是前边长度相等的部分字符也相等,且前者较长则返回1(如:”abcd”和”abc”);否则返回-1(如:”abc”和”abcd”)。

用例:

1
2
3
cout << strcmp("aBc", "abc") << endl;    // -1
cout << strcmp("abcD", "abc") << endl; // 1
cout << strcmp("", "") << endl; // 0

strcat()—字符串的拼接

函数原型:

1
char *strcat(char *str1, char *str2);

  该函数将str2拼接到str1后,新字符串放入str1中,函数返回值为str1的首字符地址。

用例:

1
2
3
4
char str1[] = "Hello", str2[] = "!";
cout << strlen(str1) << endl; // strlen(str1) = 5;
strcat(str1, str2); // str1 = Hello!;
cout << strlen(str1) << endl; // strlen(str1) = 6;

转载请注明来源:©Tinshine