C++ string類庫簡介

2020-07-16 10:05:21
字串的表現形式多種多樣,如 TCHAR,std::string、BSTR 等。字串類均起源於 C 語言的字串,而最初 C 語言的字串是字元的陣列。單位元組字串順序存放各個字串,並用 表示字串的結束。在 C 語言中,已存在部分字串處理常式,例如 strcpy(),sprintf() , stoi() 等,只能用於單位元組字串。在標準庫中,還有僅用於 Unicode 字串的函數,如 wcscpy(),swprintf() , _wtol() 等。

多數人都慣於使用指標 ++-- 操作符來遍歷字串。使用陣列處理字串中的字元也非常方便。無論 ASCII 碼字串還是 Unicode 字串,使用指標均能夠正確無誤地返回要尋求的字元位置。

STL 中只有一個字串類,即 basic_string。類 basic_string 實現管理以 結尾的字元陣列,字元型別由模板引數決定。

通常,basic_string 被處理為不透明的物件,靠獲得唯讀指標來存取緩衝區,寫操作是由 basic_string 的成員函數實現的。STL 的 C++ 標準程式庫中的 string 類,使用時不必擔心記憶體是否充足、字串長度等問題。

string 作為類出現,其整合的操作函數足以完成多數情況下的需要。可以使用 "=" 進行賦值,使用 "==" 進行等值比較,使用 "+" 做串聯。

要使用 string 類,必須包含標頭檔案 <string>。在 STL 庫中,basic_string 有兩個預定義型別:包含 char 的 string 型別和包含 wchar 的 wstring 型別。

string 類的 string::npos 可同時定義字串的最大長度,通常設定為無符號 int 的最大值。string 類包含了 6 個建構函式。string 類支援 cin 方式和 getline() 方式兩種輸入方式。簡單範例如下:
string stuff;
cin >> stuff;
getline(cin, stuff);
上述三行程式碼,第一行是宣告 string 類的物件 stuff,第二行是從螢幕讀入輸入的字串,第三行同樣實現第二行程式碼的功能。

string 庫提供了許多其他功能,如刪除字串的部分或全部,用一個字元的部分或全部替換另一個字串的部分或全部,插入、刪除字串中資料,比較、提取、複製、交換等。