1.c++ 有兩種風格的字符串形式
c風格字符串
定義及初始化
char a[]={'h','e','l','l','o','\0'}
或者
char a[]="hello"; //C++ 編譯器會在初始化數組時,自動把 '\0' 放在字符串的末尾
輸出:cout<<a;
或者
for(int i=0;i<strlen(a);i++)
cout<<a[i]
長度:strlrn(a);
string類型
定義及初始化:
string a="hello";
輸出:cout<<a;
或者
for(int i=0;i<strlen(a);i++)
cout<<a[i](或者a.at(i) )
長度:a.size();
2.string類型的字符串運算和函數
在以字符數組存放字符串時,字符串的運算要用字符串函數,如strcat(連接)、strcmp(比較)、strcpy(復制),而對string類對象,可以不用這些函數,而直接用簡單的運算符。
這是因為模板庫中重載了例如 + 、+= 、= 的運算符。
1).字符串復制用賦值號
string1=string2;
其作用與“strcpy(string1,string2);”相同。
2).字符串連接用加號
string string1=″C++″; //定義string1並賦初值
string string2=″Language″;//定義string2並賦初值
string1=string1 + string2;//連接string1和string2
連接后string1為″C++ Language″。
3)字符串比較直接用關系運算符
可以直接用 ==(等於)、>(大於)、<(小於)、!=(不等於)、>=(大於或等於)、<=(小於或等於)等關系運算符來進行字符串的比較。
使用這些運算符比使用5.5.5節中介紹的字符串函數直觀而方便
4)獲取字符串的第一個字符 獲取字符串的最后一個字符
string::const_iterator it = str1.begin();
cout << *it << endl;
cout << endl;
it = str1.end();//end是指向最后一個字符后面的元素,而且不能輸出,所以cout << *it << endl;這樣輸出會報錯
it--;
cout << *it << endl;
cout << endl;
5)倒置串
reserve(str.begin(),str.end());
6)查找串
//find-從指定位置起向后查找,直到串尾
string st1("babbabab");
cout << st1.find('a') << endl; //1 默認從位置0(即第1個字符)開始查找
cout << st1.find('a', 2) << endl; //4 在st1中,從位置2(b,包括位置2)開始,查找a,返回首次匹配的位置
string st2("aabcbcabcbabcc");
str1 = "abc";
cout << st2.find(str1, 2) << endl;//6 從st2的位置2(b)開始匹配,返回第一次成功匹配時匹配的串(abc)的首字符在st2中的位置,失敗返回-1
7)截取字符串
str.substr(startpos,length); //從str的startpos位置截取length長度的字符串