C/C++ 字符串操作对比总结表


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函数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值