C++简明手册(1) 标准库类型string

标准库类型string

1.定义与初始化

    string s1  //默认初始化,s1是一个空串
    string s2=s1  //s2是s1的副本
    string s3="value"  //s3是字面值"value"的副本
    string s4(n,'c')  //s4是连续n个字符'c'组成的串

2.增

2.1. 加法运算符(+)

    //两个string对象相加
    //string& operator+= (const string& str);
    string s1="aaa";
    string s2="bbb";
    string s3=s1+s2;  //s3的内容为"aaabbb"

    //字面量加string
    //string& operator+= (const char* s);
    string s4="aaa";
    string s5=s4+"bbb"  //s5的内容为"aaabbb"

2.2. insert()

    //在原串下标pos前插入字符串或字面量
    //string& insert (size_t pos, const string& str);
    //string& insert (size_t pos, const char* s);
    string s1="aaa";
    string s2="bbb";
    s1.insert(1,s2);  //s1的内容为"abbbaa"
    s2.insert(2,"ccc");  //s2的内容为"bbcccb"

    //在原串下标pos前插入n个字符c
    //string& insert (size_t pos, size_t n, char c);
    string s3="aaa";
    s3.insert(1,2,'c')  //s3的内容为"accaa"

2.3.push_back()

    //在原串的后面加一个字符
    //void push_back (char c);
    string s1="aaa";
    s1.push_back(b);  //s1的内容为"aaab"

2.4.append()

    //在原串后面附加字符串或字面量
    //string& append (const string& str);
    //string& append (const char* s);
    string s1="aaa";
    string s2="bbb";
    s1.append(s2);  //s1的内容为"aaabbb"
    s2.append("ccc");  //s2的内容为"bbbccc"

    //在原串后面附加上一个字符串str的子串,这个子串从下标subpos开始,长度为npos
    //string& append (const string& str, size_t subpos, size_t sublen = npos);
    string s3="aaa";
    string s4="bbb";
    s3.append(s4,0,2);  //s3的内容为"aaabb"

3.删

3.1. erase()

    //删除原串从下标pos开始,长度为npos的子串
    //string& erase (size_t pos = 0, size_t len = npos);
    string s1="abcde";
    s1.erase(1,3);  //s1的内容为"ae"

    //删除迭代器p指向的元素
    //iterator erase (iterator p);
    string s2="abcde";
    s2.erase(s2.begin()+2);  //s2的内容为"abde"

    //删除范围为[first,last)的子串
    //iterator erase (iterator first, iterator last);
    string s3="abcde";
    s3.erase(s3.begin()+1,s3.end()-2);  //s3的内容为"ade"

3.2. pop_back()

    //删除原串最后一个字符
    //void pop_back();
    string s1="abcde";
    s1.pop_back();  //s1的内容为"abcd"

4.改

4.1. replace()

    //将原串从下标pos开始,长度为len的子串替换为str
    //string& replace (size_t pos, size_t len, const string& str);
    string s1="abcde";
    string s2="xxx"
    s1.replace(1,3,s2);  //s1的内容为"axxxe"

    //将原串从下标pos开始,长度为len的子串替换为,str从下标subpos开始,长度为npos的子串
    //string& replace (size_t pos, size_t len, const string& str,
    //                 size_t subpos, size_t sublen = npos);
    string s3="abcde";
    string s4="xyz"
    s3.replace(1,3,s4,1,2);  //s3的内容为"ayze"

5.查

5.1. find()

    //返回找到目标字符串/字面量/字符的第一个元素的下标,没找到返回std::string::npos
    //size_t find (const string& str, size_t pos = 0) const noexcept;
    //size_t find (const char* s, size_t pos = 0) const;
    //size_t find (char c, size_t pos = 0) const noexcept;
    string s1="abcde";
    char c='a';
    string s2="bc";
    std::size_t found;
    found=s1.find(c);  //found为0
    found=s1.find(s2);  //found为1
    found=s1.find("de");  //found为3
    found=s1.find("xxx");  //found为std::string::npos

6.其他常用操作

6.1. substr()

    //返回原串从下标pos开始,长度为npos的子串
    //string substr (size_t pos = 0, size_t len = npos) const;
    string s1="abcde";
    string s2=s1.substr(1,2);  //s2的内容为"bc"

6.2. size()/length()

    //返回字符串的字节数
    //size_t size() const noexcept;
    //size_t length() const noexcept;
    string s1="abcde";
    size_t len=s1.size();  //len为5

6.3. c_str()

    //返回原串的C风格字符串的指针
    //const char* c_str() const noexcept;
    string s1="abcde";
    char* cstr = new char [s1.length()+1];
    std::strcpy (cstr, s1.c_str());

C++官方详细手册string

posted @ 2021-12-24 15:34  El_Brown  阅读(104)  评论(0)    收藏  举报