string字符串:#include <string>

typedef basic_string<char> string;

1.string str("xxx");//在棧中隱士實例化string對象

2.string str = "xxx";

3.string str = string("xxx");//顯示構造

4.string* str = new string("xxx");//在堆內存實例化對象

   delete str;

5.string str;//空串不會顯示任何內容

   string str(""/*注意不能接受NULL指針*/);//同上

   string str(pStr ? "" : pStr);

6.從c --> c++

   char cStr[] = "xxx";

   string str(cStr);

7.從c++ --> c

   const char* str2 = str.c_str();//將字符串的首地址變爲const類型字符串的指針

8.string的操作符重載:

   str+str、str+=str、str=str3、str>str3、str==str3......

   = + += > >= < <= == !=

9.string函數:注意下標都從0開始

   (1)str.size()//字符串的緩衝區大小,不包含\0

   (2)str.length()//獲取元素個數,不包含\0

   (3)str.resize(5);//將字符串緩衝區大小設置爲5,如果多了則截斷,如果少了全部補'\0'.

   (4)str+="xxxxxx";//如果str本身後面有'\0'那麼,所加字符串添加到後面,輸出str的結果到'\0'截止,即後面加的字符串不會輸出。

   但是緩衝區的大小加了所加字符串的長度

   (5)str.compare(str2);//比較字符串的大小

   1:str > str2

   0:str = str2

   -1:str < str2

   (6)str.append(str2);//將str2拼接到str後面

   str.append(str2, n, m);//從str2字符串的第n個(下標從0開始)開始的m個字符拼接到str後面

   如:string str1("hello");string str2("the world !");str1.append(str2, 4, 5);結果:helloworld

   (7)str.at(index) == str[index]

   相同的是下標都從0開始

   不同的是 [] 沒有檢查數組越界(取出來未知值),而at檢查是否越界訪問,並拋出out_of_range& ex異常

   (8)str.find(str2);//在str中查找str2,如果找到就返回str2在str1中開始位置的下標(下標類型爲:string::size_type)

   如果下標值等於:string::npos(全局變量),那麼表示到了str1結尾

   (9)str.insert(pos, str2);//在下標爲pos的位置插入str2

   另外一個版本:str.insert(pos, str2, n, m);//在下標爲pos的位置插入m個字符, 從str2的第n個字符開始(開始下標爲0)

   (10)str.erase(pos, n);//從下標爲pos的地方開始刪除n個字符

   (11)pos = str.find_first_of(str2, pos);//在str中找到第一個字符,這個字符能和str2中任何一個字符匹配,並返回這個字符在str1中的下標

   否則返回npos(文件結尾)

   (12)類似拷貝構造函數和獲取子串

   string str2(str1, pos, n);//在str1中從pos下標處開始的n個字符截取作爲參數構造str2

   str2 = str1.substr(pos, n);//在str1中從pos下標開始截取n個字符賦值給str2

   (13)str1.replace(pos, size, str2);//將str1的pos下標處開始size個字符替換爲str2,str1的長度可能隨str2的長度變化

   string str1 ("123456789abcdefghtr");

   str1.replace (9, 2, "hello");

   123456789hellocdefghtr

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章