1. string的构造函数
string的构造函数 | 描述 |
---|---|
string s | 默认构造函数,元素个数为空 |
string s(n,'a') | s是由n个'a'组成的字符串 |
string s{'a','b',...} | 将初始化列表拷贝到s |
string s(cp) string s(cp,n) |
将cp指向的数组拷贝到s,数组必须以空字符结尾 将从cp开始的n个字符拷贝到s |
string s1(s2) string s1(s2,pos) string s1(s2,pos,len) string s(b,e) |
将s2拷贝到s1 将s2中下标从pos开始的字符拷贝到s1 将s2中下标从pos开始的len个字符拷贝到s1 将迭代器[b,e)内的元素拷贝到s |
2. 实例
// 编译环境:MinGW
#include <iostream>
#include <string>
using namespace std;
void show(string &s);
int main()
{
//1、默认构造函数,元素个数为空
string s1;
show(s1);
cout << "-------------------" << endl;
//2、将初始化列表拷贝到s
string s2{'a', 'b', 'c'};
show(s2);
cout << "-------------------" << endl;
//3、s是由3个'a'组成的字符串
string s3(3, 'a');
show(s3);
cout << "-------------------" << endl;
//4、将cp1指向的数组拷贝到s,数组必须以空字符结尾
char cp1[] = {'a', 'b', '\0'};
string s4(cp1);
show(s4);
//5、将从cp2开始的2个字符拷贝到s
const char *cp2 = {"ab"};
string s5(cp2, 2);
show(s5);
cout << "-------------------" << endl;
//6、将s2拷贝到s1
string s = "abc";
string s6(s);
show(s6);
//7、将s2中下标从pos开始的字符拷贝到s1
string s7(s, 2);
show(s7);
//8、将s2中下标从pos开始的len个字符拷贝到s1
string s8(s, 1, 2);
show(s8);
//9、将迭代器[b,e)内的元素拷贝到s
string s9(s.begin(), s.end());
show(s9);
return 0;
}
void show(string &s)
{
static int i = 0;
++i;
cout << "s" << i << ": " << s << endl;
}
运行结果
3. 总结
- 若构造空串,则选择string s
- 若构造n个相同字符的字符串,则选择string s(n,'a')
- 若构造n个不同字符的字符串,则选择string s{'a','b',...}
- 若已存在数组,需拷贝其元素,则选择string s(cp)和string s(cp,n)
- 若已存在字符串,则选择string s1(s2)、string s1(s2,pos)、string s1(s2,pos,len)、string s(b,e)