STL之string容器

string

string封装了char*,管理这个字符串,是一个char*型的容器。


 

string的相关操作

头文件

#include<string>

string构造函数

string str;//创建一个空的字符串 
string str1(str);//使用一个string对象初始化另一个string对象
string str2("hello");//使用字符串s初始化
string str3(3,'a');//使用n个字符c初始化 

string基本赋值操作

string str1="hello";//char*类型字符串 赋值给当前的字符串      str1="hello"
string str2=str1;//把字符串s赋给当前的字符串                 str2="hello"
string str3='a';//字符赋值给当前的字符串                     str3="a"
str4.assign("hello");//把字符串s赋给当前的字符串             str4="hello"
str5.assign("hello",3);//把字符串s的前n个字符赋给当前的字符串  str5="hel"
str6.assign(str2);//把字符串s赋给当前字符串                  str6="hello"
str7.assign(5,'a')//用n个字符c赋给当前字符串                 str7="aaaaa"
str8.assign(str4,0,3)//将s从start开始n个字符赋值给字符串      str8="hel"
str9.assign("hello",0,3)//将s从start开始n个字符赋值给字符串   str9="hel"

string存取字符操作

 

str[i];//通过[]方式取字符  访问越界直接挂掉
str.at(i);//通过at方法获取字符  访问越界抛出异常

 

为了修改string字符串的内容,下标操作符[]和at都会返回字符的引用。但当字符串的内存被重新分配之后,可能发生错误.

string拼接操作

str+=str1;//重载+=操作符
str+="hello";//重载+=操作符
str+='a';//重载+=操作符
str.append("hello");//把字符串s连接到当前字符串结尾
str.append("hello",3);//把字符串s的前n个字符连接到当前字符串结尾
str.append(str,3);//这种写法错误[Error] no matching function for call to 'std::basic_string<char>::append(std::string&, int)'
str.append(str1);//同operator+=()
str.append(str1,0,3);//把字符串s中从pos开始的n个字符连接到当前字符串结尾
str.append("world",0,3);//把字符串s中从pos开始的n个字符连接到当前字符串结尾
str.append(3,'a');//在当前字符串结尾添加n个字符c

string查找和替换

str.find(str1,0); //查找str第一次出现位置,从pos开始查找,返回int下标
str.find("hello",2);  //查找s第一次出现位置,从pos开始查找
int find(const char* s, int pos, int n) const;  //从pos位置查找s的前n个字符第一次位置
str.find('a',0);  //从pos位置查找字符c第一次出现位置
str.rfind(str1,0);//查找str最后一次位置,从pos开始查找
str.rfind("hello",2);//查找s最后一次出现位置,从pos开始查找
str.rfind("hello",0,3);//从pos查找s的前n个字符最后一次位置
str.rfind('a',0) const; //查找字符c最后一次出现位置
str.replace(0,3,str1); //替换从pos开始n个字符为字符串str
str.replace(0,3,"hello"); //替换从pos开始的n个字符为字符串s

string比较操作

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

string子串

string str=str1.substr(0,3);//返回由pos开始的n个字符组成的字符串

string插入和删除操作

str.insert(2,"hello"); //插入字符串
str.insert(2,str1); //插入字符串
str.insert(1,3,'a');//在指定位置插入n个字符c
str.erase(1,3);//删除从Pos开始的n个字符 

string和c-style字符串转换

//string 转 char*
string str = "itcast";
const char* cstr = str.c_str();
//char* 转 string 
char* s = "itcast";
string str(s);

小练习

写一个函数,函数内部将string字符串中的所有小写字母都变为大写字母。

#include<iostream>
#include<string>
using namespace std;
int main(){
    string str="hello";
    for(int i=0;i<str.size();i++){
        str[i]=toupper(str[i]);    //tolower
    }
    cout<<str<<endl;
    return 0;
}

输出:HELLO

posted @ 2021-03-06 23:36  gonghr  阅读(88)  评论(1)    收藏  举报