頭文件<string>
…
操作
…
string操作的實參
…
構造函數和析構函數
注意
:
你不能以一個單字符初始化某字符串,但是可以這樣做:
string a('a');//錯誤
string b(1, 'a');//正確
string c({ 'a' });//正確
表示存在一個從const char* 到string的自動類型轉換,但不存在一個從char到string的自動類型轉換.
…
…
string和C-String
C++ STL將字符串字母常量的類型由char*
改變爲const char*
.爲了提供兼容性,還規定了可從const char*
隱式轉換爲char*
.
返回指向以’\0’結尾的不可變數組的指針
注意:
'\0'在string中並不具有特殊意義
有三個函數可以將string內容轉換爲字符數組或C-string:
1. c_str()
和data()
可以得到string對應的C-string,所得到的結果和以’\0’結尾的字符數組一樣
2.copy()
將string內容複製到調用者提供的字符數組中,其末尾不添加'\0'字符
.
複製[_Off, _Off + _Count) 到 [_Ptr, _Ptr + _Count)
使用例子:
int main()
{
string b("123456");
cout << atoi(b.data()) << endl;
cout << atoi(b.c_str()) << endl;
char buffer[10];
b.copy(buffer, 10);
}
…
…
大小和容量
一個string存在三種"大小" :
1.size()
和length()
:返回string的現有字符數,兩個函數等效
2.max_size()
:返回string最多能夠包含的字符數。與PC本身的限制有關係,返回值一般而言是索引類型之最大值減一。
之所以減一有兩個原因:1.最大值本身是npos.2.具體實現過程中有可能在內部緩衝區末尾添加一個’\0’,以便將這個string當作C-string使用。
3.capacity()
:重新分配內存之前,string所能包含的最大字符數.
注意
:
…
…
元素訪問
有兩種方法可以訪問單一字符:下標操作符[]和成員函數at()
,C++11還提供了front()
和back()
用來訪問第一字符和最末字符.
注意:
…
…
比較
…
…
更改內容
賦值
交換
清空
插入和移除字符
…
…
子字符串及字符串接合
i/o操作
getline()
搜索和查找
npos的意義
數值轉換