元素访问
at:访问指定字符,有边界检查
operator[]:访问指定字符
front:访问首字符
back:访问最后的字符
data:返回指向字符串首字符的指针
c_str:返回字符串的不可修改的 C 字符数组版本
operator basic_string_view:返回到整个字符串的不可修改的 basic_string_view
迭代器
begin,cbegin:返回指向起始的迭代器
end,cend:返回指向末尾的迭代器
rbegin,crbegin:返回指向起始的逆向迭代器
rend,crend:返回指向末尾的逆向迭代器
容量
empty:检查字符串是否为空
size,length:返回字符数
max_size:返回字符数的最大值
reserve:保留存储
capacity:返回当前对象分配的存储空间能保存的字符数量
shrink_to_fit:通过释放不使用内存减少内存使用
操作
clear:清除内容
insert:插入字符
erase:移除字符
push_back:后附字符到结尾
pop_back:移除末尾字符
append:后附字符到结尾
operator+=:后附字符到结尾
compare:比较二个字符串
starts_with:检查 string 是否始于给定前缀
ends_with:检查 string 是否终于给定后缀
replace:替换字符串的指定部分
substr:返回子串
copy:复制字符
resize:更改存储的字符数
swap:交换内容
查找
find:于字符串中寻找字符
rfind:寻找子串的最后一次出现
find_first_of:寻找字符的首次出现
find_first_not_of:寻找字符的首次缺失
find_last_of:寻找字符的最后一次出现
find_last_not_of:寻找字符的最后一次缺失
输入/输出
operator<<,operator>>:进行 string 上的流输入与输出
getline:从 I/O 流读取数据到字符串
数值转换
stoi,stol,stoll:转换字符串为有符号整数
stoul,stoull:转换字符串为无符号整数
stof,stod,stold:转换字符串为浮点值
to_string:转换整数或浮点值为 string
to_wstring:转换整数或浮点值为 wstring
//
// Created by LiuHongzhe on 2021/11/11.
//
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
string a;
/* getline(cin,a);//从 I/O 流读取数据到字符串
cout<<a<<endl;*/
/*
* 立即在空白符分隔输入后使用时,例如在 int n; std::cin >> n; 后,
* getline 会用 operator>> 消耗掉留在输入流上的换行符,并立即返回。
* 常用解决方案是在切换到面向行输入前,用 cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 忽略输入行上所有剩下的字符。
*/
/* ll n;
cin>>n;
cin.ignore(numeric_limits<streamsize>::max(), '\n');
getline(cin,a);
cout<<a<<endl;*/
a="x ash uchs 21 51";
cout<<a.empty()<<endl;//检查字符串是否为空
cout<<a.size()<<endl;//返回字符数
cout<<a.length()<<endl;//返回字符数
cout<<a.max_size()<<endl;//返回字符数的最大值
for(auto it=a.begin();it<a.end();it++)
{
cout<<*it;//返回指向起始的迭代器,返回指向末尾的迭代器
}
cout<<endl;
cout<<a.front()<<endl;//访问首字符
cout<<a.back()<<endl;//访问最后的字符
cout<<a.c_str()<<endl;//返回字符串的不可修改的 C 字符数组版本
a.insert(2,3,'5');
cout<<a<<endl;
a.insert(1, "369");//插入字符
cout<<a<<endl;
a.erase(3,5);//移除字符
cout<<a<<endl;
a.erase(find(a.begin(),a.end(), ' '));// 擦除第一个' '
cout<<a<<endl;
a.erase(a.find(' '));//擦除所有' '
cout<<a<<endl;
a="This is an example";
a.erase(a.find(' ')); // 从 ' ' 到字符串尾裁剪(减去后面的子串)
cout<<a<<endl;
a.push_back('a');//后附字符到结尾
cout<<a<<endl;
a.pop_back();//移除末尾字符
cout<<a<<endl;
a="";
a.append(5,'a');//后附字符到结尾
cout<<a<<endl;
string b="liuhongzhe";
a.append(b);
cout<<a<<endl;
a.append(b,2,3);
cout<<a<<endl;
a.operator+=('5');//后附字符到结尾
cout<<a<<endl;
a="abc";
b="abb";
int ans=a.compare(b);//比较二个字符串
cout<<ans<<endl;
a="abc";
b="abc";
ans=a.compare(b);
cout<<ans<<endl;
a="abc";
b="abd";
ans=a.compare(b);
cout<<ans<<endl;
cout<<"***********************************"<<endl;
a="liu zhang zhe";
a.replace(4,5,"hong");//替换字符串的指定部分
cout<<a<<endl;
b=a.substr(5);//返回子串
cout<<b<<endl;
b=a.substr(5,5);
cout<<b<<endl;
char str[50];
a="abc123";
a.copy(str,sizeof str);//复制字符
cout<<str<<endl;
cout<<a<<endl;
a="this code is c++ code";
ans=a.find("s");//于字符串中寻找字符第一次出现位置
cout<<ans<<endl;
ans=a.find("s",ans+1);//于字符串中寻找字符第一次出现位置,从ans+1位置开始找
cout<<ans<<endl;
ans=a.find("c++");//于字符串中寻找字符第一次出现位置寻找子串的第一次出现位置
cout<<ans<<endl;
ans=a.rfind("s");//于字符串中寻找字符最后一次出现位置
cout<<ans<<endl;
ans=a.rfind("s",ans+1);//于字符串中寻找字符最后一次出现位置,从ans+1位置开始
cout<<ans<<endl;
ans=a.rfind("code");//于字符串中寻找字符最后一次出现位置寻找子串的第一次出现位置
cout<<ans<<endl;
//个人测试子串也成功
ans=a.find_first_of("code");//寻找字符的首次出现
cout<<ans<<endl;
ans=a.find_first_of("code",10);//寻找字符的首次出现,从pos开始
cout<<ans<<endl;
//同理有
// find_first_of:寻找字符的首次出现
// find_first_not_of:寻找字符的首次缺失
// find_last_of:寻找字符的最后一次出现
// find_last_not_of:寻找字符的最后一次缺失
a.clear();//清除内容
cout<<a.size()<<endl;
//数值转换
cout<<"***********************************************************************"<<endl;
a="314";
int ans1= stoi(a);//转换字符串为有符号整数
cout<<ans1<<" "<<sizeof(ans1)<<endl;
long int ans2= stol(a);//转换字符串为有符号整数
cout<<ans2<<" "<<sizeof(ans2)<<endl;
long long int ans3= stoll(a);//转换字符串为有符号整数
cout<<ans3<<" "<<sizeof(ans3)<<endl;
unsigned int ans4= stoul(a);//转换字符串为无符号整数
cout<<ans4<<" "<<sizeof(ans4)<<endl;
a="3.1415916";
double ans5= stof(a);//转换字符串为浮点值
cout<<ans5<<" "<<sizeof(ans5)<<endl;
int x1=520;
double x2=3.14159242;
a= to_string(x1);//转换整数或浮点值为 string
cout<<a<<endl;
a= to_string(x2);//转换整数或浮点值为 string (四舍五入保留6位)
cout<<a<<endl;
x1=520;
wstring y1=to_wstring(x1);//转换整数或浮点值为 wstring
wcout<<y1<<endl;
x2=3.14;
wstring y2= to_wstring(x2);//转换整数或浮点值为 wstring
wcout<<y2<<endl;
a="算法工作室牛逼";
y1=L"算法工作室牛逼";
cout<<a.length()<<endl;
cout<<y1.length()<<endl;
return 0;
}