美文网首页
C++之string

C++之string

作者: 二进制人类 | 来源:发表于2022-10-08 17:30 被阅读0次

字符串构造和赋值操作

#include <string>
//string 构造函数
string();//创建一个空的字符串 例如: string str;
string(const string& str);//使用一个 string 对象初始化另一个 string 对象
string(const char* s);//使用字符串 s 初始化
string(int n, char c);//使用 n 个字符 c 初始化 v
//string 基本赋值操作
string& operator=(const char* s);//char*类型字符串 赋值给当前的字符串
string& operator=(const string &s);//把字符串 s 赋给当前的字符串
string& operator=(char c);//字符赋值给当前的字符串
string& assign(const char *s);//把字符串 s 赋给当前的字符串
string& assign(const char *s, int n);//把字符串 s 的前 n 个字符赋给当前的字符串
string& assign(const string &s);//把字符串 s 赋给当前字符串
string& assign(int n, char c);//用 n 个字符 c 赋给当前字符串
string& assign(const string &s, int start, int n);//将 s 从 start 开始 n 个字符赋值给字符串

实例

#include <iostream>
#include <string>
int main(){
     string str1("hello world");
    string str2(10,'B');
    string str3 = str2;

    cout<<str1<<endl;//hello world
    cout<<str2<<endl;//BBBBBBBBBB
    cout<<str3<<endl;//BBBBBBBBBB
    str1="hello string";
    str2=str1;
    str3='W';
    cout<<str1<<endl;//"hello string"
    cout<<str2<<endl;//"hello string"
    cout<<str3<<endl;//"W"
    
    string str4;
    str4.assign("hellow word", 5);
    cout<<str4<<endl;//"hello"

    string str5="hello world";
    string str6;
    str6.assign(str5,3,4);
    cout<<str6<<endl;//"lo w"
    return 0;
}

存取字符

char& operator[](int n);//通过[]方式取字符
char& at(int n);//通过 at 方法获取字符

实例

#include <iostream>
#include <string>
int main(){
    string str1="hello world";
    cout<<str1[2]<<endl;//'l'
    str1[2]='B';
    cout<<str1<<endl;//"heBlo world"

    cout<<str1.size()<<endl;//11

    cout<<str1.at(2)<<endl;//'B'
    str1.at(2)='H';
    cout<<str1.at(2)<<endl;//'H'

    //[]和at的区别:[]越界不会抛出异常 at会抛出异常
    try
    {
        //str1[100]='B';
        str1.at(100)='B';
    }
    catch(exception &e)
    {
        cout<<e.what()<<endl;
    }
    return 0;
}

字符串拼接操作

string& operator+=(const string& str);//重载+=操作符
string& operator+=(const char* str);//重载+=操作符
string& operator+=(const char c);//重载+=操作符
string& append(const char *s);//把字符串 s 连接到当前字符串结尾
string& append(const char *s, int n);//把字符串 s 的前 n 个字符连接到当前字符串结尾
string& append(const string &s);//同 operator+=()
string& append(const string &s, int pos, int n);//把字符串 s 中从 pos 开始的 n 个字符连接到当前字符串结尾
string& append(int n, char c);//在当前字符串结尾添加 n 个字符 c

实例

#include <iostream>
#include <string>
int main(){
    string str1="hello";
    string str2="world";
    str1 += str2;
    cout<<str1<<endl;//helloworld
    str2 += "xixi";
    cout<<str2<<endl;//"worldxixi"

    string str3="hello";
    str3.append("world", 3);
    cout<<str3<<endl;//"hellowor"

    string str4="hello world";
    string str5="hello";

    str5.append(str4, 3,4);
    cout<<str5<<endl;//"hellolo w"

    string str6="hello";
    cout<<str6+"world"<<endl;//"helloworld"
}

字符串查找和替换

int find(const string& str, int pos = 0) const; //查找 str 第一次出现位置, 从 pos 开始查找
int find(const char* s, int pos = 0) const; //查找 s 第一次出现位置,从 pos开始查找
int find(const char* s, int pos, int n) const; //从 pos 位置查找 s 的前 n 个字符第一次位置
int find(const char c, int pos = 0) const; //查找字符 c 第一次出现位置
int rfind(const string& str, int pos = npos) const;//查找 str 最后一次位置, 从 pos 开始查找
int rfind(const char* s, int pos = npos) const;//查找 s 最后一次出现位置,从pos 开始查找
int rfind(const char* s, int pos, int n) const;//从 pos 查找 s 的前 n 个字符最后一次位置
int rfind(const char c, int pos = 0) const; //查找字符 c 最后一次出现位置
string& replace(int pos, int n, const string& str); //替换从 pos 开始 n 个字符为字符串 str
string& replace(int pos, int n, const char* s); //替换从 pos 开始的 n 个字符为字符串 s

实例

#include <iostream>
#include <string>
int main(){
    string str1="http://www.sex.777.sex.999.com";
    string str2="sex";
    cout<<str1.find(str2)<<endl;//11
    cout<<str1.find("sex")<<endl;//11
    cout<<str1.find("sex",12)<<endl;//19
    cout<<str1.find("lsexixi", 1,3);
    //需求:将铭感词sex屏蔽
    while(1)
    {
        int ret = str1.find("sex");
        if(ret == -1)
            break;
        str1.replace(ret,3,"***");
    }
    cout<<str1<<endl;//"http://www.***.777.***.999.com"
}

字符串比较

/*compare 函数在>时返回 1,<时返回 -1,==时返回 0。
比较区分大小写,比较时参考字典顺序,排越前面的越小。
大写的 A 比小写的 a 小。*/
int compare(const string &s) const;//与字符串 s 比较
int compare(const char *s) const;//与字符串 s 比较

实例

#include <iostream>
#include <string>
int main(){
   string str1;
    string str2;
    cout<<"请输入两个字符串"<<endl;
    cin>>str1;
    cin>>str2;

    if(str1.compare(str2)>0)
    {
        cout<<str1+"大于"+str2<<endl;
    }
    else if(str1.compare(str2)<0)
    {
        cout<<str1+"小于"+str2<<endl;
    }
    else if(str1.compare(str2) == 0)
    {
        cout<<str1+"等于"+str2<<endl;
    }//hello小于world
}

字符串提取

string substr(int pos = 0, int n = npos) const;//返回由 pos 开始的 n 个字符组成的字符串

实例

#include <iostream>
#include <string>
int main(){

    string str1="hehehe:xixixi:hahaha:lalala:wuwuwu:henhenhen:heiheihei";
    //cout<<str1.substr(7,6)<<endl;//"xixixi"

    int s=0;
    while(1)
    {
        int ret = str1.find(':', s);
        if(ret == -1)//未找到
        {
           string tmp = str1.substr(s,str1.size()-s);
           cout<<tmp<<endl;
           break;
        }
        //找到
        string tmp = str1.substr(s,ret-s);
        cout<<tmp<<endl;
        //从找到的位置的下一个位置开始继续查找
        s = ret+1;
    }
    //hehehe
    //xixixi
    //hahaha
    //lalala
    //wuwuwu
    //henhenhen
    //heiheihei
}

字符串插入和删除

string& insert(int pos, const char* s); //插入字符串
string& insert(int pos, const string& str); //插入字符串
string& insert(int pos, int n, char c);//在指定位置插入 n 个字符 c
string& erase(int pos, int n = npos);//删除从 Pos 开始的 n 个字符

实例

void test()
{
    string str1="hello world";
    str1.insert(4,"###");
    cout<<str1<<endl;//"hell###o world"
    //str1.erase(0,str1.size());
    str1.erase(4,3);
    cout<<str1<<endl;//"hello world"
}

C字符串转string(自动转换)

string转C字符串

实例

string str2="hello world";
const char *p = str2.c_str();
cout<<p<<endl;//"hello world"

相关文章

网友评论

      本文标题:C++之string

      本文链接:https://www.haomeiwen.com/subject/ixpwartx.html