string容器

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: string容器

string与C风格对比

一,char*是一个指针,string是一个类

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

二,string 封装了很多实用的成员方法

查找:find, 拷贝:copy,删除:delete,替换:replace,插入:insert

三,不用考虑内存释放和越界

string 管理了char* 所分配的内存,每一次string的复制,取值都是由string 类负责维护,不用担心复制越界和取值越界等。

string 构造函数


   一,string    s1,//创建一个空的字符串  

   二,string   s2(s1),  //拷贝构造

   三,string   s3("aaa")  //有参构造

   四,string    s4(10,'a')  //两个参数的有参构造


string 基本赋值操作


   一,string  s5;

                s5=s4;

   二,s5.assign("abcdef")//原型为 s5.assign(const  char*s)

          s5=abcdef;

   三,s5.assign("abcdefg",3);//两个参数

            s5的值abc;  //截取了前3个

   四,s6.assign(s5,1,5)  //将s5从1开始的5个字符复制给s6


string字符存取


   一,string s="hello world"

         for(int i=0;i<size();i++)

          {   cout<<s[i]<<endl;     //[]越界会直接挂掉

              cout<<s.at(i)<<endl;//at越界只会抛出一个异常  out_of_range

           }


string拼接


   一,string str1=“jiang”;

           string  str2="shuang";

           string   str3="shuang";

           str1+=str2; //jiangshuang

            str1.append(str3);//jiangshuangshuang


string查找


   一,int pos=str4.find(str5)//如果找不到子串,返回-1,找到返回第一次出现的位置。

           rfind//从右往左

           find(str5,3)//从3开始查找

   二,str4.replace(1,3,"111111");//替换从1开始的3个字符为“111111”(是两个字符串替换,可能不相等)


string比较


   一,if(str1.compare(str2)==0)//>.<

 

   string子串

   string str="abcde"

   string subStr=str.substr(1,3)//bcd从1开始截3个字符


一个例题(提取网站中的每个单词)

 


         string str="www.jiangshuang.com.cn"

           vector<string>  v;

           int start=0;

            while(true)

   {       int pos=str.find('.',start);

        if(pos==-1)

   {  subString=str.substr(start,str.size()-start);

       v.push_back(subString);

    }

      subString=str.substr(start,pos-start);

       v.push_back(subString);

       star=pos+1;

   }

   for(vector<string>::iterator  it =v.begin();it!=v.end();it++)

   {

       cout<<*it<<endl;

   //www

   //jiangshuang

   //com

   //cn

   }


字符串的插入与删除

一,插入


   string  str="hello";

   str.insert(1,"111");//h111ello;

   str.insert(1,str1)//可以在指定位置插入字符串

   str.insert(int pos,int n,char c)//在指定位置插入n个字符


二,删除


     str. erase(int pos,int n);//从指定位置插入n个字符。


string 与 c-style字符串转换


   //char*->string

   char* str="hello";

   string  s(str);

   //string->char*

   const char*str2=s.c_str();


另:


   void dowork(string s)

   { }

   dowork(str2)//编译器将 const char* 可以隐式类型转换为  string

                        //编译器不会将 string隐式类型转换为  const char*


string字符串内字母的变大变小


    str[i]=topower(str[i]);//转大

    str[i]=tolower(str[i]);//转小



string变成数字


   int s=atoi(str.c_str());


atoi()的参数是 const char* ,因此对于一个字符串str我们必须调用 c_str()的方法把这个string转换成 const char*类型的,










目录
相关文章
|
10天前
|
C++ 索引 容器
c++string容器-子串获取讲解
c++string容器-子串获取讲解
44 0
|
10天前
|
存储 C++ 索引
C++ string容器-字符存取讲解
C++ string容器-字符存取讲解
32 0
|
1天前
|
C++ 容器
黑马c++ STL部分 笔记(2) string容器
黑马c++ STL部分 笔记(2) string容器
|
10天前
|
存储 算法 C++
string容器一字符事查找和替换
string容器一字符事查找和替换
13 0
|
10天前
|
存储 C++ 索引
C++中的string容器及字符串拼接操作讲解
C++中的string容器及字符串拼接操作讲解
22 3
|
10天前
|
存储 算法 C++
c++string容器-字符串比较讲解
c++string容器-字符串比较讲解
29 1
|
10天前
|
C++ 容器
【C++】STL容器——string类的例题应用(9)
【C++】STL容器——string类的例题应用(9)
|
10天前
|
C++ 容器
【C++】STL容器——string类的使用指南(含代码演示)(8)
【C++】STL容器——string类的使用指南(含代码演示)(8)
|
5月前
|
测试技术 C语言 C++
C++ 带你吃透string容器的使用(下)
C++ 带你吃透string容器的使用
105 2
|
5月前
|
编译器 Linux C++
C++ 带你吃透string容器的使用(上)
C++ 带你吃透string容器的使用