string類型支持長度可變的字符串,C++標准庫將負責管理與存儲字符相關的內存,以及提供各種有用對的操作。標准庫string類型的目的就是滿足對字符串的一般應用。
1.string對象的定義和初始化
通過string類的構造函數來進行初始化。
常用的有:
//默認構造函數,s1為空串 string s1; //將s2初始化s1的一個副本 string s2(s1); //將s3初始化為一個字符串字面值副本 string s3("value"); //將s4初始化為字符'c'的n個副本 string s4(4,'c');
在C++11中定義:
default (1)
string();
copy (2)
string (const string& str);
substring (3)
string (const string& str, size_t pos, size_t len = npos);
from c-string (4)
string (const char* s);
from buffer (5)
string (const char* s, size_t n);
fill (6)
string (size_t n, char c);
range (7)
template
initializer list (8)
string (initializer_list
move (9)
string (string&& str) noexcept;
2.string對象的讀寫
讀取並忽略開頭所有的空白字符,包括空格,換行符,制表符等
讀取字符直至再次遇到空白字符
例如,輸入的是 “ this string class ” 則讀取的字符串為 “string”
//初始化一個空的string string s; //讀取s值 cin >> s; //輸出s值 cout << s << endl;
3.string對象的常用操作
string類型的常用操作
S.empty()
如果S為空串,則返回true,否則返回false
S.size()
返回S中字符的個數
S[n]
返回S中位置為n的字符,位置從0開始計數
S1 + S2
把S1 和 S2連接成一個新字符串,返回新生成的字符串
S1 = S2
把S1內容替換為S2的副本
S1 == S2
比較S1和S2的內容,相等則返回true,否則返回false
!=,<,<=,>,>=
保持這些操作慣有的含義
注:size()操作返回的是string::size_type類型的值。string類類型和許多其他庫類型都定義了一些配套類型。通過這些配套類型,庫類型的使用就能與機器無關。size_type就是這些配套類型中的一種。它定義為與unsigned型具有相同的含義,而且可以保證足夠大能夠存儲任意string對象的長度。為了使用由string類型定義的size_type類型,程序員必須加上作用域操作符來說明所使用的size_type類型是由string類定義的。
保存一個string對象size的最安全的方法就是使用標准庫類型 string::size_type 。
從string對象獲取字符
string類型通過下標操作符([])來訪問string對象中的單個字符。下標操作符需要取一個size_type類型的值,來說明要訪問字符的位置。這個下標中的值通常被稱為“下標”或“索引”。
/* * string class practice * date : 2015--05--19 * @author: zhang * version: 0.1 * compiled by g++ */ #include#include using namespace std; int main() { //默認構造函數,s1為空串 string s1; //將s2初始化s1的一個副本 string s2(s1); //將s3初始化為一個字符串字面值副本 string s3("value"); //將s4初始化為字符'c'的n個副本 string s4(4,'c'); //初始化一個空的string string s; //讀取s值 cin >> s; //輸出s值 cout << s << endl; //size()和empty()使用例子 string S("this"); cout << "the size of "<< S << " is " << S.size() <
參考文獻:
http://www.cplusplus.com/reference/string/string/string/
C++ Primer