1.string類:
一直都在用string類,但是卻沒系統的瞭解,下面就係統介紹一下。
string的構造函數,目前存在7中,其中後兩種是C++11新增的。如下圖:
下面用代碼分別舉例:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string One("Littery Winner!"); // 將One賦值爲Littery Winner!
string Two(20, 'S'); // 將Two賦值爲20個S
string Three(One); // 複製構造函數,複製One
string Four; // 定義一個空字符串
char alls[] = "All's well that ends well";
string Five(alls, 20); // 取alls的前20個字節
string Six(alls + 6, alls + 10); // 取[6,10)的字符,不包括10
string Six2(&alls[6], &alls[10]); // 取[6,10)的字符,不包括10
string Seven(Four, 7, 16); // 取Four的第7個字符開始,複製16個字符到Seven
//C++11
string (string&& str); // 叫做移動構造函數,將string賦值爲str的副本
string Nine = { 'A', 'B', 'C', 'D', 'E' }; // 類似於數組賦值方式
}
2. string 的最大允許長度爲 string::npos。通常是最大的unsigned int值。
3. 使用字符串的其他方式:可以比較兩個字符串<,==,>,可以獲取字符串的長度,size()和length()。兩者功能相同,length是較早版本的,size是STL兼容添加的。
4.string的find方法相關
a.size_type find(const string& str,size_type pos=0) const :用於從位置pos開始查找str,如果找到返回出現str第一個字符的索引位置,否則返回string::npos。
b.size_type find(const char* s,size_type pos=0) const:也是查找s,只不過是char*數組
c.size_type find(const char* s,size_type_pos=0,size_type n):查找s的前n個字符組成的子字符串,找到返回第一個字符的索引,否則返回string::npos;
d.size_type find(const ch,size_type pos =0) const:在pos位置查找字符ch,返回值與上邊相同
還有rfind:用於超找字符串或者字符最後一次出現的位置,
find_first_of:用於查找參數中任何一個字符首次出現的位置,如原字符串爲“cobra”,int where = str.find_first_of("hark");返回3,hark是大集合,cobra是子集合,用cobra去hark中挨個比對,位置爲3
5除此之外,還有替換assign,刪除erase,複製copy,交換swap,比較compare,等等