[关闭]
@songying 2019-02-19T14:27:38.000000Z 字数 1914 阅读 1035

c++ c-string

c++


c-string 字符串实际上使用\0 终止的一维字符数组。

  1. char str[] = "hello"; // 字符数组
  2. char *str = "hello"; // 字符串

相关库: cstring

该头文件定义了一个变量类型,一个宏以及各种操作字符数组的函数。

1. 变量与宏

变量或宏 说明
#include <cstring> 引入c标准库
size_t sizeof 返回的无符号整型
NULL 宏常量,实现定义的空指针常量的值

2. 字符串操纵

函数 说明
char *strcpy(char *str1, const char *str2); 将str2(包括\0)拷贝到字符串str1中,并返回str1
char *strncpy(char *str1, const char *str2, size_t count); 把字符串str2中最多count个字符拷贝到字符串str1中,并返回str1。如果str2中少于count个字符,那么就用'\0'来填充,直到满足count个字符为止。
char *strcat(char *str1, const char *str2); 把str2(包括'\0')拷贝到str1的尾部(连接),并返回str1。其中终止原str1的'\0'被str2的第一个字符覆盖。
char *strncat(char *str1, const char *str2, size_t count); 把str2中最多count个字符连接到str1的尾部,并以\0终止str1,返回str1。其中终止原str1的\0被str2的第一个字符覆盖。

3. 字符串检验

函数 说明
size_t strlen(const char *str); 返回字符串str的长度,'\0'不算在内。
int strcmp(const char *str1, const char *str2); 按字典顺序比较两个字符串,str1 < str2 返回值小于0;str1 == str2 返回值等于0; str1 > str2,返回值大于0
int strncmp(const char *str1, const char *str2, size_t count); 按字典顺序比较两个字符串,最多比较count个字符
char *strchr(const char *str, int ch); 返回指向字符串str中字符ch第一次出现的位置的指针,如果str中不包含ch,则返回NULL。
char *strrchr(const char *str, int ch); 返回指向字符串str中字符ch最后一次出现的位置的指针,如果str中不包含ch,则返回NULL。
size_t strspn(const char *str1, const char *str2); 返回字符串str1中由字符串str2中字符构成的第一个子串的长度。
size_t strcspn(const char *str1, const char *str2); 返回字符串str1中由不在字符串str2中字符构成的第一个子串的长度。
char *strpbrk(const char *str1, const char *str2); 返回字符串str2中的任意字符第一次出现在字符串str1中的位置的指针;如果str1中没有与str2相同的字符,那么返回NULL。
char *strstr(const char *str1, const char *str2); 返回字符串str2第一次出现在字符串str1中的位置的指针;如果str1中不包含str2,则返回NULL。
char *strtok(char *str1, const char *str2); 返回下一个str2起始的指针,若无,返回NULL

4. 字符串数组操纵

函数 说明
void *memcpy(void *to, const void *from, size_t count); 把from中的count个字符拷贝到to中。并返回to。
void *memmove(void *to, const void *from, size_t count); 功能与memcpy类似,不同之处在于,当发生对象重叠时,函数仍能正确执行。
int memcmp(const void *buf1, const void *buf2, size_t count); 比较buf1和buf2的前count个字符,返回值与strcmp的返回值相同。
void *memchr(const void *buffer, int ch, size_t count); 返回指向ch在buffer中第一次出现的位置指针,如果在buffer的前count个字符当中找不到匹配,则返回NULL。
void *memset(void *buf, int ch, size_t count); 把buf中的前count个字符替换为ch,并返回buf。
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注