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'};

猜你喜欢

转载自blog.csdn.net/sam1437/article/details/84205670