1. 程式人生 > >C++筆記 -- string類

C++筆記 -- string類

string類的建構函式

string類的建構函式
建構函式 描述
string(const char *s) 將string物件初始化為s指向的字串
string(size_type n, char c) 建立一個包含n個元素的string物件,每個元素都被初始化為字元c
string(const string &str) 將一個string物件初始化為string物件str(複製建構函式)
string() 建立一個預設的string物件,長度為0(預設建構函式)
string(const char *s, size_type n) 將string物件初始化為s指向的字串的前n個字元,即使超過s的結尾

template<class Iter>

string(Iter begin, Iter end)

將string物件初始化為區間[begin, end)內的字元
string(const string &str, size_type pos=0, size_type n=npos) 將一個string物件初始化為物件str從pos到npos的字元
string(string && str) C++11新增,將一個string物件初始化為string物件str,並可能修改str(移動拷貝構造)
string(initializer_list<char> il) C++11新增,將一個string物件初始化為初始化列表il中的字元

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

如下程式演示利用上述不同的建構函式進行建立string物件:

#include <iostream>
#include <string>

int main()
{
	using namespace std;

	//1
	string one("This is string");
	cout << "1): " << one << endl;

	//2
	string two(20, '#');
	cout << "2): " << two << endl;

	//3
	string three(one);
	one += "Oops: ";
	cout << "3): " << three << endl;

	//4
	string four;
	four = two + three;
	cout << "4): " << four << endl;

	//5
	char alls[] = "All's well that ends well";
	string five(alls, 20);
	cout << "5): " << five << endl;

	//6
	string six(alls+6, alls+10);
	cout << "6): " << six << endl;

	//7
	string seven(six, 0, 3);
	cout << "7): " << seven << endl;
}

C++11新增的string(string && str)類似於複製建構函式,導致新建立的string為str的副本,但這與複製建構函式不同的是,它不保證將str視為const,該建構函式後續再深入。

C++11新增的string(initializer_list<char> il)可以將列表初始化語法用於string類,如下宣告將為合法的:

string nine = {'i', 'n', 'i', 't', 'i', 'a', 'l', 'i', 'z', 'e', 'r', '_', 'l', 'i', 's', 't'};

string nine{'i', 'n', 'i', 't', 'i', 'a', 'l', 'i', 'z', 'e', 'r', '_', 'l', 'i', 's', 't'};