STL之string

元素访问
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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值