C++中string的常用操作

string的常用操作
定义和初始化
string s = "hello";//拷贝初始化
string s2("hello");//直接初始化
string s3(10,'c');//直接初始化,内容是cccccccccc
读写string对象
string s1, s2;
cin >> s1;//将string对象读入s1,遇到空白停止
getline(cin,s2);//读取一行赋给s2,遇到换行符停止

可以使用while循环读取未知数量的string对象。

empty和size操作

empty函数根据string对象是否为空返回一个对应的布尔值。
size函数返回string对象的长度,即string对象中字符的个数。

比较string对象

比较运算符逐一比较string对象中的字符,并且对大小写敏感。有相等性运算符(==和!=)和关系运算符(<、<=、>、>=),如果对应位置上的字符相同,较短的小于较长的;如果在某些对应的位置上不一致,比较第一对相异字符比较的结果。

插入
string str1;
str1.push_back('a');//在str1的末尾插入字符'a'
str1.insert(str1.begin(),'a');//在指定位置前插入字符'a'

insert用法总结
(1)在index位置插入count个字符:str.insert(0,2,‘6’);
(2)在index位置插入一个常量字符串:str.insert(0,“hello”);
(3)index位置插入常量字符串中的count个字符:str.insert(0,“hello”,3);//结果就是在str前插入了hel
(4)index位置插入常量string:str.insert(0,str);//在str前插入一个str
(5)index位置插入常量str的从index_str开始的count个字符:str.insert(0,str,1,3);
(6)使用迭代器:str.insert(str.begin(),‘a’);
(7)迭代器指向的pos位置插入count个字符ch:str.insert(str.begin(),2,‘a’);

拼接
string s1("abc");
s1.append("def");
s1 += "def";
遍历

(1)下标法 for(int i = 0; i < s.size(); i++){ }
(2)正向迭代器 for(iter=s.begin();iter!=s.end();iter++){ }
(3)反向迭代器 for(riter=s.rbegin();riter!=s.rend();riter++){ }

删除erase

(1)erase(pos,n); 删除从pos开始的n个字符
(2)erase(pos); 删除pos及以后的所有字符
(3)erase(position); 删除position处的一个字符(position是个string类型的迭代器)
(4)erase(first,last); 删除从first到last之间的字符(first和last都是迭代器)

string str("hello world");
str.erase(3,4);
str.erase(str.begin());
str.erase(str.begin(),str.begin()+3);
字符替换replace

(1)replace(size_t pos, size_t n, const char s);将当前字符串从pos索引开始的n个字符,替换成字符串s,替换与被替换的字符串长度可以不相同
(2)replace(size_t pos, size_t n, size_t n1, char c); 将当前字符串从pos索引开始的n个字符,替换成n1个字符c
(3)replace(iterator i1, iterator i2, const char* s);将当前字符串[i1,i2)区间中的字符串替换为字符串s

string str = "hello world";
str.replace(0,5,"ni hao");//结果为ni hao world
查找find
string s("dog bird chicken bird cat");
s.find("chicken") // 1. 查找一个字符串,结果是:9
s.find('i',6)  // 2. 从下标为6开始找字符'i',返回找到的第一个i的下标, 结果是:11
s.rfind("chicken")  // 3. 从字符串的末尾开始查找字符串,返回的还是首字母在字符串中的下标,结果是:9
s.rfind('i') // 4. 从字符串的末尾开始查找字符,结果是:18-------因为是从末尾开始查找,所以返回第一次找到的字符
cout << (s.find('i')==s.npos) << endl;//判断是否找到,如果s.find('i')==s.npos,表示没有找到。

npos表示一个常数,表示size_t的最大值,string的find函数如果未找到指定字符,返回的就是一个npos

排序sort

需要头文件< algorithm>,默认为升序

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;

bool cmp(char a, char b){
    return a > b;
}

int main(){
    string str = "hello world";
    sort(str.begin(),str.end());//升序
    sort(str.begin(),str.end(),cmp);//降序
    cout << str << endl;
    return 0;
}

截取substr
string str("hello world");
string s1 = str.substr(3);//从下标3开始至结束
string s2 = str.substr(3,3);//从下标3开始,截取3个字符
string与数字的相互转换

数字转string:std命令空间下有一个C++标准库函数std::to_string(),可用于将数值类型转换为string。使用时需要include头文件< string>。
string转数字:使用C++11引入的C++库函数将string转换为数值类型,相应的库函数申明于头文件< cstdlib>中。
在这里插入图片描述
形参说明:
str:重载了string和wstring版本,表示被转换的字符串。
idx:表示一个size_t*的指针类型,默认为空值。不为空时,转换成功时获取第一个非数值字符的下标。一般情况下,因为它是直接char型指针把最后非数值字符的地址值和起始地址值相减,所以也表示成功转换的字符数量,如”10”转成功为数值10时,*idx的值为2。
base:表示转换基准,默认是10进制。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值