C语言 #include<string.h>
注:字符串会在末尾额外添加 ‘\0’ 作为结束标志
C语言中的字符串用char*表示。
str基本操作
语法 | 功能 |
---|
strcpy(a, b) | 把字符串 b 复制到 a |
strncpy(a, b, n) | 复制 b 中长度为 n 的字符串到 a |
strcat(a, b) | 将 b 连接到 a 字符串尾部 |
strncat(a, b, n) | 将 b 的指定长度的子字符串连接到 a 尾部 |
strlen(a) | 返回字符串 a 的长度 |
strcmp(a, b) | 比较字符串( a == b返回0; a > b返回正数; a < b返回负数 )## 标题 |
strcasecmp(a, b) | 忽略大小写比较字符串 |
strncmp(a, b, n) | 比较长度为 n 的子串大小 |
strchr(a, c) | 在字符串中查找指定字符 c |
strrchr(a, c) | 在字符串中反向查找 |
strstr(a, b) | 在 a 中查找字符串 b,返回字符串出现的位置char* |
strpbrk(a, b) | 以 b 字符串的所有字符作为集合,在 a 中查找该集合的任一元素 |
strspn(a, b) | 以 b 字符串的所有字符作为集合,在 a 查找不属于该集合的任一元素的偏移 |
strcspn(a, b) | 以 b 字符串的所有字符作为集合,在 a 字符串查找属于该集合的任一元素的偏移 |
string与数值类型的转换
语法 | 功能 |
---|
strtod(p, ppend) | 从字符串 p 中转换 double 类型数值,并将后续的字符串指针存储到 ppend 指向的 char* 类型存储。 |
strtol(p, ppend, base) | 从字符串 p 中转换 long 类型整型数值,base 显式设置转换的整型进制,设置为 0 以根据特定格式判断所用进制,0x, 0X 前缀为十六进制格式整型,0 前缀为八进制格式整型 |
atoi() | 字符串转换到 int 整型 |
atof() | 字符串转换到 double 符点数 |
atol() | 字符串转换到 long 整型 |
字符检查
语法 | 功能 |
---|
isalpha() | 检查是否为字母字符 |
isupper() | 检查是否为大写字母字符 |
islower() | 检查是否为小写字母字符 |
isdigit() | 检查是否为数字 |
isxdigit() | 检查是否为十六进制数字表示的有效字符 |
isspace() | 检查是否为空格类型字符 |
iscntrl() | 检查是否为控制字符 |
ispunct() | 检查是否为标点符号 |
isalnum() | 检查是否为字母和数字 |
isprint() | 检查是否是可打印字符 |
isgraph() | 检查是否是图形字符,等效于 isalnum() |
C++语言 #include <string>
构造函数与赋值
语法 | 功能 |
---|
std::string() | 创建一个空字符串 |
std::string(const char* s) } | 从C风格char*字符串创建一个字符串 |
std::string(size_t n, char c) | 使用特定字符重复n次创建一个字符串 |
operator=(const std::string& other) | 将其他字符串的内容复制到当前字符串 |
assign(const std::string& other) | 将其他字符串的内容复制到当前字符串 |
assign(const char* s) | 从C风格char*字符串复制 |
assign(size_t n, char c) | 使用特定字符重复n次重新分配字符串 |
获取信息与访问元素
语法 | 功能 |
---|
size() | 返回字符串长度(不包括结束符\0) |
length() | 返回字符串长度(不包括结束符\0) |
max_size() | 返回最大可能长度 |
empty() | 检查是否为空 |
operator[] | 访问指定位置的字符(可以修改) |
at() | 访问指定位置的字符并检查范围,超出会抛出异常 |
front() | 访问第一个字符 |
back() | 访问最后一个字符 |
插入与删除
语法 | 功能 |
---|
resize(size_t n) | 改变字符串长度,可能添加或删除字符 |
reserve(size_t n) | 预留内存以容纳至少n个字符 |
insert(size_t pos, const char* s) | 在指定位置插入C风格字符串 |
insert(size_t pos, size_t n, char c) | 在指定位置插入n个字符c |
erase(size_t pos, size_t n) | 删除从pos开始的n个字符 |
clear() | 清除所有字符,使字符串变为空 |
查找与替换
语法 | 功能 |
---|
find(const std::string& str, size_t pos = 0) | 查找子串出现的位置 |
rfind(const std::string& str, size_t pos = npos) | 反向查找子串出现的位置 |
find_first_of(char c, size_t pos = 0) | 查找第一个出现的字符 |
find_last_of(char c, size_t pos = npos) | 反向查找第一个出现的字符 |
replace(size_t pos, size_t n, const std::string& str) | 替换从pos开始的n个字符为给定字符串 |
replace(size_t pos, size_t n, const char* s) | 使用C风格字符串替换从pos开始的n个字符 |
replace(size_t pos, size_t n, size_t count, char c) | 替换从pos开始的n个字符为count个字符c |
类型转换
语法 | 功能 |
---|
c_str() | 返回指向C风格字符串的常量指针(不可修改) |
data() | 返回指向char*字符串的指针(C++17后可通过指针修改字符串,且转换后末尾不一定有’\0’,不能与C函数交互) |
copy(char* s, size_t n, size_t pos = 0) | 将字符串拷贝到C数组中 |
to_string() | 将数值类型转换为字符串 |
C++ string类可以通过c_str()转换为C风格字符串来方便地使用C函数