首页 > 其他 > 详细

string容器

时间:2020-07-24 14:29:13      阅读:51      评论:0      收藏:0      [点我收藏+]

基本概念:

  1. string是C++中字符串。
  2. 不同于char*维护的字符串,string本质是一个类,是char*型的容器。
  3. string类内部提供了很多的成员函数来管理字符串。

string构造函数:

  1.   string();
  2.   string(const cahr* s);
  3.   string(const string& str);
  4.        string(int n,char c);
/*string构造函数演示*/
string s();//s为空字符串

string s1("i love c++");//s1为“i love c++”

string s2(s1);//s2拷贝s1(深拷贝)

string s3(3,a);//s3为“aaa”

 

字符串的赋值:

  1. string类内部实现了运算符 ‘=’的重载,允许使用=赋值。
  2. 使用assign函数。
/*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 s;
s="i love c++";

string s2;
s2=s;

string s3;
s3=c;

string s4;
s4.assigin("i love c++",4);//其余不再赘述。(空格占1位)。

 

  

字符串的拼接:

  1. string类内提供了+=的重载函数。
  2. 使用append()方法。
/* string& operator+=(const char* str);                   //重载+=操作符
string& operator+=(const char c);                         //重载+=操作符
string& operator+=(const string& str);             //重载+=操作符
string& append(const char *s);                                //把字符串s连接到当前字符串结尾
string& append(const char *s, int n);                 //把字符串s的前n个字符连接到当前字符串结尾
string& append(const string &s);                           //同operator+=(const string& str)
string& append(const string &s, int pos, int n);//字符串s中从pos开始的n个字符连接到字符串结尾
*/
string s="i"string s1="love";
s+=s1;//s为"i love"
s+=“c++”;
//s为"i love c++";

string s2="very much"
s.append(s4,0,9);//s为“i love c++ very much”

 

  

字符串的查找与替换:

/*
 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
*/
string s("asdasda");
int pos=s.find("asd",0[,3]);//在s中从0开始匹配“asd”字符串【的前3位】,返回第一次出现的位置

int pos1=s.rfind("asd",0[,3])//同find,区别在于返回最后一次出现的位置

s.replace(0,3,"as");//将s中,从0开始的3个字符替换为“as”。s=“asasda”。

 

字符串的比较:

/*
   int compare(const string &s) const;//与字符串s比较
   int compare(const char* s) const;   
*/

//字符串之间比较的是逐个字符的ASCII码值。大于返回1,等于返回0,否则返回-1.

string s("asd");
string s1("bsd");

s.compare(s1);//返回-1

s.compare("aad");//返回1

s.compare("asd");//返回0

 

字符操作:

  1.   string容器重载了[ ]。
  2.   at()方法
/*
   char& operator[](int n);
   char& at(int n); 
*/

string s="abc";

cout<<s[0];//  输出a
cout<<s.at(0);//同上

s[0]=b;//s="bbc"
s.at(0)=c;//s="cbc"

string的插入与删除:

  1, insert()。

  2,erase()。

/*
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个字符 
*/

string s("aaaaa");
s.insert(1,"bb");  // s="abbaaaa";

s.erase(1,2); //从第一位的后面一位(或下标1开始)开始,删除2个字符

string获取子串:

  方法:string substr(int pos=0,int n=npos) const;

  //从pos开始,返回n个字符的子串

 

string容器

原文:https://www.cnblogs.com/my-new-blog-zxj/p/13368784.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!