03字符串算法

发布时间:2024年01月14日

1.cin和getline的区别

void text01(){
    string s;
//   cin>>s;//hello world
//   cout<<s;//hello
    //原因:cin遇到空格会结束读入
    getline(cin,s);
    //getline的格式是getline(cin,s);
    cout<<s;//hello world
}
void text02(){
    string s1;
    string s2;
    /*cin>>s1;*/
    getline(cin,s1);
    //连续输入两个字符串的时候cin和getline配合使用可能会出错
    //getline吃了回车倒是无法读入下个字符串了
    getline(cin,s2);
    //解决方法,俩个getline
    cout<<s1<<endl<<s2<<endl;
}

2.s.length()和s.size()

void text03(){
    string s;
    getline(cin,s);
    for(int i=0;i<s.size();i++){
        cout<<s[i];
    }
    cout<<endl;
    for(int i=0;i<=s.length();i++){
        cout<<s[i];
    }
}

3.字符串的拼接、赋值和比较大小

void text04(){
    string s1,s2;
    getline(cin,s1);
    getline(cin,s2);
    //拼接用'+'
    cout<<s1+s2<<endl;
    //赋值直接用'='
    //这里面都是运算符的重载operator
    string s3=s1;
    cout<<s3<<endl;
    /*
     * 字符串的比较规则:从首位开始逐一比较,直到遇到
     * 不相等的一位,比较他们的ASCLL码值,大的就大,小的就小
     * */
    if(s1>s2){
        cout<<s1<<">"<<s2<<endl;
    }
    else if(s1==s2){
        cout<<s1<<"="<<s2<<endl;
    }
    else{
        cout<<s1<<"<"<<s2<<endl;
    }
}

4.s.erase删除和s.insert插入

void text05(){
    /*字符串的删除
     * 字符数组的删除是伪删除,删除完之后数组的大小不变
     * 但是string类下的erase方法是真删除,size大小也会改变
     * */
    string s="love china";
    /*erase使用方法
     * 两参-->s.erase(int pos,int cout)从字符串的pos位置,删除cout个字符,包含pos
     * 单参-->s.erase(int pos),从字符串pos位置,把后面的字符都删除
     * */
    //love china
    s.erase(4,1);
    cout<<s<<endl;
    /*s.erase(4);*/
    /*insert使用方法
     * 三参-->s.insert(int pos,int cout,char val)
     * 在pos位置,插入cout个val
     * */
    s.insert(4,4,' ');
    cout<<s<<endl;
}

5.s1.find(s2)查找字串操作

void text06(){
    string s1,s2;
    s1="i love china";
    s2="china";
    /*s1.find(s2)使用方法
     * 口诀:大串find小串,查到返回首个字符对应位置的下标,反之返回-1
     * 小串是大串的字串
     * */
    int pos=s1.find(s2);
    if(pos!=-1){
        cout<<s2<<" is substring of "<<s1<<endl;
        cout<<"the first pos is "<<pos<<endl;
    }
    else
        cout<<"NONE"<<endl;
}

6.s.substr()字符串截取操作

void text07(){
    string s="i love china";
    /*s.substr(int pos,int cout);
     * 返回截取后的值,但原串不变
     * */
    s.substr(2,4);
    cout<<s<<endl;
    cout<<s.substr(2,4)<<endl;
}

7.sort()字符串的排序和字符串数组的排序

void text08(){
    string s[5];
    for(int i=0;i<5;i++){
        getline(cin,s[i]);
    }
    sort(s,s+5);
    for(int i=0;i<5;i++){
        cout<<s[i]<<endl;
    }
}

8.reverse()翻转

void text09(){
    string s;
    getline(cin,s);
    reverse(s.begin(),s.end());
    cout<<s<<endl;
}

9.stoi()、stod()、stol()、to_string()

void text10(){
    string s1="123",s2="456";
    cout<<stoi(s1)+stoi(s2)<<endl;
    string s3="3.14",s4="5.12";
    cout<<stod(s3)+stod(s4)<<endl;
    int a=123,b=456;
    cout<<to_string(a)+to_string(b)<<endl;
}
文章来源:https://blog.csdn.net/m0_75178021/article/details/135573417
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。