字符串string使用

6 篇文章 0 订阅

string、cstring、string.h区别

string :c++的字符串库,std:string str();
string.h : c中的字符串库
cstring :c++中c风格的字符串库,基于string.h为c++定制的;
string 和 cstring 都在在std命名空间中

1. string

string结尾没有'\0';c语言中的const char* 是以‘’\0‘’结尾;
string常和流文件结合处理。

1.1基本操作
#include<string>
//初始化
//str4和str7容易混淆,但是str3和str6是一致的,所以开始写的话建议就写
string str1; //生成空字符串 
string str2("123456789");
string str3("12345", 0, 3);//结果为"123" ,从0位置开始,长度为3 
//string str4("123456", 5); //结果为"12345" ,长度为5 //5.
string str5(5, '2'); //结果为"22222" 
string str6(str2, 25);结果为"34567"2开始长度为5
//string str7(str2, 2); //结果为"3456789",截取第三个元素(2对应第三位)到最后
全参数。
//访问
s.size()
s.capacity();
s.max_size();
s[];

//操作符
str2=str2+str3;
str2+=str3;
str2=str3;
string str8 =str3;//赋值构造

支持stringC-string的比较(如 str < "hello"
在使用>,>=,<,<=这些操作符的时候是根据当前字符特性将字符按字典顺序进行逐一比较字典排序靠前的字符小, 比较的顺序是从前向后比较,遇到不相等的字符就按这个位置上的两个字符的比较结果确定两个字符串的大小(前面减后面)。

1.2类型转换
s.c_str()string->char
stoi()string->int
atoi()char->int
1.3 大小写转换、替换
tolower(s[i])转换为小写
toupper(s[i])转换为大写
s.replace(pos,n,str)pos开始的n个字符替换为字符串str
s.replace(pos,n,n1,c)pos开始的n个字符替换为n1个字符c
s.replace(it1,it2,str)[it1,it2)区间替换为str ,it为迭代器
1.4插入、删除、分割
s.substr(pos,n)截取从pos索引开始的n个字符
erase(iterator first, iterator last)[first,last)
erase(pos, len)删除[pos,pos+len-1]
s.push_back(‘a’)
s.append(“abc”)尾部插入
s.insert(s.begin(),‘1’)迭代器插入
1.5 查找
s.find (“abc”, 2 )返回pos,支持字符串和字符,从s[2]开始查子串位置
rfind反向
find_first_of查找含有子串s的字符
find_first_not_of查找子串s没有字符
find_last_of查找最后一个位于子串s的字符
find_last_not_of
// c++ 20   
#include<algorithm>
string s("string")
//返回iterator;范围[s.begin(),s.end()),未找到返回 s.end();
auto pos = std::find(s.begin()+l,s.end(),'i');  
//判断是否存在  存在返回true
s.end()==pos ? return false; : return true;  
// 其他的find_if  find_if_not 相同格式

2.cstring

2.1 函数
3 字符分类<cctype>
isalnum(c)测试 c 是否字母或数字
isalpha是否字母
isascll是否 ASCII 字符
iscntrl是否控制字符(0x00~0xlF 或0x7F)
iscsym是否字母、下划线或数字
iscsymf是否字母或下划线
isdigit是否十进制数字
isgraph是否空格外的可打印字符
islower/isupper是否小写/大写字母
isprint是否可打印字符包括空格字符(0x20~0x7E)
ispunct是否标点符号
isspace空白字符(0x09~0x0D 或0x20)
isxdigit十六进制数字(A~F,a~f 或0~9)

C-style字符串常用函数实现

MyString 类实现

  • 基本构造函数、析构
  • +,=,+=,<<符号重载;
  • 迭代器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值