string字符串:#include

typedef basic_string<char> string;c++

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

2.string str = "xxx";app

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

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

   delete str;spa

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=str三、str>str三、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

相關文章
相關標籤/搜索