C++筆記 -- string類
阿新 • • 發佈:2018-11-20
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'};