string类型的原型为char ,加入各种功能成为一个类。可以很方便的s1+s2+"asd"进行这类简单明了的操作。(这绝对是C++的优势)。
在成员函数上,基本和向量容器vector一样。
在实际运用中最头痛的莫过数据转化了。
转化
string 转 char *
string s;
strcpy(char*,s.c_str());
char 转string
string t;char c[10];
t.assign(c,strlen(c) ); //char数组转string
注意strlen的长度并不一定是10,它是遇到\0为结尾结束的(不包括\0)。和printf函数一样
例如:strlen("as\0ds")==2
赋值:
重载符 +
string s="adasd"+a+b~~~; a==b ;a=b;
重载符 =
如果完全赋值可以用string a=b;
当只是部分时,a.assign(b.begin()+x,b.begin()+y);
重载符 = =
if(a==b) if(a=="asd")
删除
如同vector一样删减用
erase函数。
删除第i位。s.erase(s.begin()+i);
删除前i个。s.erase(i);
删除从a到b。s.erase(s.begin()+a,s.begin()+b)
char s[5],和string str;
在赋值时有点不同。s={'1','2',……}这样赋值时,可以输入5个。但是用printf函数时会出现问题,因为没有\0。
s="1234",只能赋值4个,因为它会自动加上\0; 而str=“asd”就不会自动加上\0,因为string用了链表可以知道哪里结束。