与char*不太相同,string直接就代表一个字符串的对象,string是类,而创建出来的变量就是对象。
STL
同所有的stl容器一样,差不多的函数都可以使用。
begin、end、front、back、size、capacity、push_back、pop_back。
其中,只有list有push_front和pop_front,其余都有push_back和pop_back。
其中string的push_back,添加的是字符,而不是字符串。
后续的还有insert、erase、clear、substr、append、find、replace。
还有reverse,这是单独使用迭代器的独立函数,而不是像find等,对象函数。
getline(cin,str)
cin的时候,以:空格、tab或回车作为结束标志。
如果想连同空格一起输出显示,如下:
string str;
getline(cin,str);
cout<<str;
形如这种操作才可以。
str1.compare(str2)
输出第一个不同字符的比较结果,大于返回1,小于返回-1,相等返回0。
也就是说,如果str1是abc,str2是abd的话,如题就是-1,对应位置比较之后,c的ASCII值小于d,因此,str1没比过str2,那就是-1了。
str1.insert(i,str2)
从str1的下标i处加入str2,例如i是2,那就从前两个之后开始,加入str2,后续拼接起来全部。
string str="abcd";
string strx="XXX";
char c='Y';
str.insert(2,strx);
//abXXXcd
str.insert(3,1,c);
//abcYd
//如果插入字符那必然是1个字符,但是1也不能少。
str.erase(3,4)
形如abcdefgh,3是从下标3开始,也就是d处,要加减都从d前面开始,4表示4个字符,那么结果就是:abch。
str2=str.substr(3,4)
形如abcdefg的3和4,结果就是defg。
str.append(str2)
在str结尾处加入str2,也可以像之前insert一样,append(1,'a');
str.replace(ite1,ite2,str2)
讲迭代器中间的位置全部换成str2。
str.find(char或str)
返回的是字符或字符串第一次出现的下标,如果没找到就是乱码。
reverse(ite1,ite2)
这个是翻转特定位置的字符串,与其他不同的是,这是一个单独的函数!
str.c_str()
将string转为const char*,用const char*来接住。