码迷,mamicode.com
首页 > 编程语言 > 详细

一文读懂C++ String类在算法竞赛中的常见用法

时间:2021-04-30 12:14:45      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:c++   bcd   erase   使用   app   用法   har   insert   copy   

一文读懂C++ String类在算法竞赛中的常见用法

string 相较于C语言的字符数组可方便太多了,在算法竞赛中能大大节省我们的时间。以下是我在刷题中会使用到的常见String用法。注释都写好了。

#include <iostream>
#include <string>
using namespace std;
int main(){
    //1、字符串拼接
    string s1 = "Hello";
    string s2 = "World!";
    string s3 = s1 + s2;
    cout<< s3 <<endl; //输出为HelloWorld!
    s3.append("123"); //字符串自加
    cout<< s3 <<endl; //输出为HelloWorld!123

    //2、字符串输入输出
//    cin >> s3; //输入Hello World! cin是以空格,回车作为结束输入的标志
//    cout<< s3 <<endl; //输出为Hello

    //3、读取一行字符
//    getline(cin, s3); // 读取??的字符串,包括空格 输入Hello World!
    cout<< s3 <<endl; //输出为Hello World!

    //4、获取字符串的长度
    int lens1 = s1.length();
    cout<< lens1 <<endl; //输出为5
    int lens2 = s2.size();
    cout<< lens2 <<endl; //输出为6


    //5、将字符串当成字符数组使用
    cout<<s1[0]<<endl; //输出为H
    cout<<s1[1]<<endl; //输出为e
    cout<<s1[2]<<endl; //输出为l

    //6、字符串与字符数组的互换
    //字符串转字符数组
    //方法1
    char a[100];
    int lens = s1.copy(a,s1.size());
    a[lens] = ‘\0‘;
    printf("%s\n",a); //输出Hello
    //方法2
    strcpy(a,s2.c_str());
    printf("%s\n",a); //输出World!

    //字符数组转字符串
    string s5(a);
    cout<<s5<<endl; //输出World!

    //7、字符串的比较
    s1 = "abc";
    s2 = "abb";
    if (s1 > s2) cout<<"yes1"<<endl; //输出yes1 按照字典序比大小
    s1 = "Abc";
    s2 = "abb";
    if (s1 > s2) cout<<"yes2"<<endl; //不输出,大小写敏感,且大写字母的值小于小写字母的值 按照字典序比大小

    s1 = "A";
    s2 = "a";
    if (s1 < s2) cout<<"yes3"<<endl; //输出yes3 大写字母的值小于小写字母的值

    //8、字符串的子串
    s1 = "hello World!";
    s2 = s1.substr(2,5);
    cout<<s2<<endl; //输出 llo W 从下标2开始 截取5个字符
    s2 = s1.substr(3);
    cout<<s2<<endl; //输出 llo W 从下标3开始 截取3到末尾的所有字符

    //9、查找字符串的子串
    int n = s1.find("World");
    cout<<n<<endl; //输出6 即从下标6开始就是这个匹配的字符
    cout<<s1.find("o")<<endl; //输出4 从前往后查找输出最先匹配到的下标
    cout<<s1.rfind("o")<<endl; //输出7 从后往前查找输出最先匹配到的下标
    cout<<s1.find("oo")<<endl; //输出18446744073709551615 额,反正就是没有找到

    //10、替换字符串
    s1 = "hello World!";
    s1.replace(0,5,"fuck");
    cout<<s1<<endl; //输出fuck World!
    //指定替换 例如将World! 中的orl 替换成ORL
    n = s1.find("orl");
    s1.replace(n,3,"ORL");
    cout<<s1<<endl; //输出fuck WORLd!

    //11、删除子串
    s1.erase(n,3); //n表示位置 3表示删除三个字符
    cout<<s1<<endl; //输出fuck Wd!

    //12、添加子串
    s1.insert(5,"aaa");//5表示位置 "aaa"表示增加的字符串
    cout<<s1<<endl; //输出fuck aaaWd!

    //13、STL 操作string
    string s("afgc1bed3");
    string::iterator p = find(s.begin(), s.end(), ‘c‘);
    if (p!= s.end())
        cout << p - s.begin() << endl;  //输出3 相当于c的指针-头指针
    sort(s.begin(), s.end()); //字符串排序
    cout << s << endl;  //输出 13abcdefg
    //其余STL操作就不演示了,基本上都是支持的
    
    return 0;
}


一文读懂C++ String类在算法竞赛中的常见用法

标签:c++   bcd   erase   使用   app   用法   har   insert   copy   

原文地址:https://www.cnblogs.com/xwxz/p/14719027.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!