C++ Primer:string构造函数总结


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. 总结

  1. 若构造空串,则选择string s
  2. 若构造n个相同字符的字符串,则选择string s(n,'a')
  3. 若构造n个不同字符的字符串,则选择string s{'a','b',...}
  4. 若已存在数组,需拷贝其元素,则选择string s(cp)和string s(cp,n)
  5. 若已存在字符串,则选择string s1(s2)、string s1(s2,pos)、string s1(s2,pos,len)、string s(b,e)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容