欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

C++(操作符重载)-3. 字符串 字符串类(熟悉的)

最编程 2024-10-08 19:49:31
...
#include <iostream>
#include <string.h>

using namespace std;

int main()
{
    string s; // 生成一个空字符串
    cout << "判断字符串是否为空:" <<  s.empty() << endl; // 1
    string s1 = "Thursday"; // 隐式调用构造函数,参数const char*
    string s2("Thursday"); // 显式调用上面的构造函数
    cout << (s1 == s2) << endl; // 1
    string s3 = s1; // 隐式调用拷贝构造
    string s4(s2); // 显式调用拷贝构造
    cout << (s3 == s4) << endl; // 1
    s = s4; // 赋值运算符
    cout << s << endl; // "Thursday"

    // 参数1:const char* 原字符串
    // 参数2:保留几个字符
    string s5("ABCDEFG",2);
    cout << s5 << endl; // AB

    s = "ABCDEFG";
    // 参数1:string 原字符串
    // 参数2:不保留前几个字符
    string s6(s,2);
    cout << s6 << endl; // CDEFG

    // 参数1:字符串长度
    // 参数2:字符内容
    string s7(6,'A');
    cout << s7 << endl; // AAAAAA
    // 交换
    swap(s6,s7);
    cout << s6 << " " << s7 << endl; // AAAAAA CDEFG

    s = s6+s7; // 拼接
    cout << s << endl; // AAAAAACDEFG

    // 向后追加
    s.append("123");
    cout << s << endl; // AAAAAACDEFG123

    // 向后追加单字符
    s.push_back('%'); // AAAAAACDEFG123%

    // 插入
    // 参数1:插入的位置
    // 参数2:插入的内容
    s.insert(1,"222"); // A222AAAAACDEFG123%

    // 参数1:删除的起始位置
    // 参数2:删除的字符数
    s.erase(4,10);
    cout << s << endl; // A222123%

    // 参数1:替换的起始位置
    // 参数2:替换的字符数
    // 参数3:替换的内容
    s.replace(0,3,"******");
    cout << s << endl; // ******2123%

    s.clear(); // 清空
    cout << s.length() << endl; // 0

    char c[20];
    s = "1234567890";
    // 参数1:拷贝的目标
    // 参数2:拷贝的字符数
    // 参数3:拷贝的起始位置
    s.copy(c,3,1);
    cout << c << endl; // 234

    // C → C++ 直接赋值即可
    // char* → string
    char* c1 = "Tom";
    char c2[] = "Jerry";
    string sc1 = c1;
    string sc2 = c2;
    cout << sc1 << "&" << sc2 << endl; // Tom&Jerry

    // C++ → C
    // string → char[]
    s = "abcd";
    char ch[10];
    strcpy(ch,s.c_str()); // c_str()返回值的const char*不稳定
    cout << ch << endl;

    return 0;
}

推荐阅读