由一段代码说开去——string

#include <string>//包含string类
#include <iostream>
#include <algorithm>
#include <vector>
#include <cstdio>
//#include <sstream>//字符串流
using namespace std;

int main()
{
  string  a,b;
  char c[10]="拜拜";
  a="ab c";//把c字符串赋值给string对象
  a.append(c);//把字符或者字符串 追加到string对象的最后 很像vetor的push_back()方法;
  b+=a+c;
  cout<<b<<endl;
  cout<<a<<endl;
  b.append(a.begin(),a.end());
  cout<<b<<endl;
  /*
  find(),replace(),insert(),erase(),length(),compare(),reverse();
  这些方法婆婆妈妈的一大堆重载 鄙人感觉只要记住基本的 其他的可以通过求子串和复制构造等推求就可以了 
  也许着就是c和c++的区别 一个是给你基本的东西 让我用好这些工具 去探索大片未知的领域
  另一个交给你大量的工具 让你在遇到问题时 找到一定能够找到这些工具 你需要做到的只是记住它找到它
  */
  
  /*****************用string对象做vector的元素********************/
  vector<string> v;
  v.push_back(c);
  v.push_back(a);
  cout<<v[1]<<endl;
  
  /***********使用printf函数输出string对象的值***************/
  printf(a.c_str());
  
  return 0;
}

  感觉c++中的string的使命有两个 一个是使用上面像vector 一个是功能上面取代c字符数组(因为有too much成员方法)

1.首先创建一个string;就像其他类一样做 不过这个有许多重载的构造函数 还有复制构造函数可以将c字符串 转换成string对象
2.append();是string类的一个成员方法,很像vector里面的pushback()方法;把字符或者字符串 追加到string对象的最后,所以就有了重载,参数可以是字符或,字符串指针

3.string也有begin()和end()方法,可以像vector那样使用 ,可以作为成员方法replace(),append()和 reverse()函数(不是成员方法)的参数

4.find():是string的一个成员方法,需要记住的基本知识是,(1)查找字符或者字符串;(2)接受两个参数,第一个是要查找的字符 或字符串 字符串可以是string c字符串指针 第二个是开始查找的位置

如果从下标0开始 也可以省略这个参数(可见用了默认值技术);如果要指定在string里面查找的长度 那么需要第三个参数length(默认值是length()方法的返回值)

5.replace():是string的一个成员方法,需要记住的基本知识是:(1)这个方法重载的比较强大,替代一段字符串为另一段;(2)参数分为两个部分:

I.要被替换的部分,有两种表示方法,一种是下标+长度法(int index,int num),一种是迭代器区间法(iterator i1,iterator i2)第二种呢常用语从头开始的替换或者到尾结束的 因为比较适合迭代器的赋值

II.用来替换的部分,有三种情况,a,用string来替换 只有这么一个参数 b.用c字符数组替换 有两个参数 第一个是字符串指针 第二个是要替换近的长度 c.用字符替换,包括两个参数第一个是字符的个数 第二个是字符

6.insert(),erase(),成员方法和vector里面的相似;reverse()函数操作string时就像操作vector一样

7.length(),成员方法是string的基本成员方法,类似于vector的size();

8.compare(),成员方法重载的太多 觉得没有必要 达到的效果并不像replace那样,只需要记住 参数可以是string也可以是c字符串指针;其他的可以使用求子串的成员方法substr()推得

9.substr(),成员方法是string的基本成员方法,求子串,接受两个参数 int index,int num; 如果没有第二个参数 那么默认求到末尾

10.c_str()方法可以使string能够适用与c字符串能够使用的场合

原文地址:https://www.cnblogs.com/dragonfive/p/2909157.html