string

1.对象创建

复制代码
//
// Created by 徐昌真 on 2024/12/15.
//
#include <iostream>
#include <string>

using namespace std;

int main() {

    string s = "意思是不要沉迷于空洞的幻想 也不要追求无用的虚名 强调了做事要脚踏实地 专注于实际的目标与行动";

    // 1. 无参构造
    string s1;
    cout << "s1: " << s1 << endl;

    // 2. 初始化列表
    string s2 = {'h','e'};
    cout << "s2: " << s2 << endl;

    // 3. 字符串初始化
    string s3_1 = "不驰于空想";
    string s3_2("不骛于虚声");
    cout << "s3_1: " << s3_1 << endl;
    cout << "s3_2: " << s3_2 << endl;

    // 4. 拷贝构造
    string s4(s);
    cout << "s4: " << s4 << endl;

    // 5. 前n'个字符
    string s5("我是久久", 5);  //具体一个汉字占几个字符 和编码格式有关 字符前位是负数
    cout << "s5: " << s5 << endl;

    // a 个 b
    string s6(10,'a');  //仅限字符
    cout << "s6: " << s6 << endl;


    return 0;
}

输出

2.插入

复制代码
//
// Created by 徐昌真 on 2024/12/18.
//
#include <iostream>
#include <cstring>
#include <string>

using namespace std;


int main() {

    // 1. = +
    string s1 = "不驰于空想";
    s1 = s1 + " 不骛于虚声";
    cout << "s1: " << s1 << endl;

    // 2. +=
    string s2 = "不驰于空想";
    s2 += " 不骛于虚声";
    cout << "s2: " << s2 << endl;

    // 3. append
    // (1)  直接插入(尾部)
    string s3 = "hello";
    s3.append(" world");
    cout << "s3: " << s3 << endl;

    // (2) 插入字符的前n个
    s3.append(" new_one", 4);
    cout << "s3: " << s3 << endl;

    // (3) 从第n个位置开始去m个元素
    s3.append("666 888", 3, 4);
    cout << "s3: " << s3 << endl;
    
    // 4. push_back
    s3.push_back('!');
    cout << "s3: " << s3 << endl;







    return 0;
}

输出

3.随机访问

复制代码
//
// Created by 徐昌真 on 2024/12/18.
//
#include <iostream>
#include <string>

using namespace std;


int main() {

    string s1 = "hello c--";
    cout << "s1: " << s1 << endl;

    // 元素访问
    cout << "s1[0]: " << s1[0] << endl;
    cout << "s1.at(0) " << s1.at(0) << endl;

    // 元素修改
    s1[s1.size() - 2] = '+';
    cout << "s1: " << s1 << endl;
    
    s1.at( s1.size() - 1 ) = '+';
    cout << "s1: " << s1 << endl;



    return 0;
}

4.插入操作

复制代码
//
// Created by 徐昌真 on 2024/12/18.
//
#include <iostream>
#include <string>

using namespace std;

int main() {

    string s1 = "heo";
    cout << "s1: " << s1 << endl;

    // 1. 在n的位置插m个c
    s1.insert(2, 2, 'l' );
    cout << "s1: " << s1 << endl;

    // 2. 在n的位置插入字符串
    s1.insert(5, " world");
    cout << "s1: " << s1 << endl;

    // 3. 迭代器
    s1.insert(s1.end(), '!');
    cout << "s1: " << s1 << endl;
    
    return 0;
}

输出

5.删除操作

复制代码
//
// Created by 徐昌真 on 2024/12/18.
//
#include <iostream>
#include <string>

using namespace std;

int main() {

    string s1 = "hello";
    cout << "s1: " << s1 << endl;

    //erase
    // 1. 全删
    s1.erase();
    cout << "s1: " << s1 << endl;
    cout << endl;

    s1 = "hello";
    cout << "s1: " << s1 << endl;

    // 2. 删除n后面的
    s1.erase(2);
    cout << "s1: " << s1 << endl;
    cout << endl;

    // 3. 删除n往后m个
    s1 = "hello";
    cout << "s1: " << s1 << endl;

    s1.erase(2, 2);
    cout << "s1: " << s1 << endl;
    cout << endl;

    // iterator 删除迭代器位置的
    s1 = "hello";
    cout << "s1: " << s1 << endl;

    s1.erase(s1.begin() );
    cout << "s1: " << s1 << endl;
    cout << endl;


    // iterator 删除迭代器位置的
    s1 = "hello";
    cout << "s1: " << s1 << endl;

    s1.erase(s1.begin() + 2, s1.begin() + 4);  //左闭右开
    cout << "s1: " << s1 << endl;
    cout << endl;


    return 0;
}

输出

6.元素查找

复制代码
//
// Created by 徐昌真 on 2024/12/18.
//
#include <iostream>
#include <string>

using namespace std;

int main() {

    // 默认find
    string s1 = "hello woooooorld";
    cout << "s1.find(\"oooo\"): " << s1.find("oooo") << endl;  //返回所在位置

    // 从第n个位置开始find
    cout << "s1.find('o'): " << s1.find('o') << endl;
    cout << "s1.find('o', 6): " << s1.find('o', 6) << endl;

    // rfind  从右边开始找
    cout << "s1.rfind('o'): " << s1.rfind('o') << endl;

    return 0;
}

7.元素替换

复制代码
//
// Created by 徐昌真 on 2024/12/18.
//
#include <iostream>
#include <string>

using namespace std;


int main() {

    string s1 = "hello java";;
    cout << "s1: " << s1 << endl;

    // replace
    // (1) 从n个位置开始选择n个元素替换掉
    s1.replace( 6, 4,  "c++");
    cout << "s1: " << s1 << endl;

    // 和上面的一样 只不过换成了迭代器
    s1.replace( s1.begin() + 6, s1.begin() + 11, "python");
    cout << "s1: " << s1 << endl;
    
    // 把替换的东西取前n个
    s1.replace( s1.begin() + 6, s1.begin() + 13, "c+++++++++++++++", 3);
    cout << "s1: " << s1 << endl;

    return 0;
}

输出

8.元素比较

compare (-1, 0, 1);

越长的越大 同样长度的从第一个不同元素开始 比较ASCII码

> == <

9. 字符获取

复制代码
//
// Created by 徐昌真 on 2024/12/18.
//
#include <iostream>
#include <string>

using namespace std;

int main() {

    // substr
    string s1 = "hello world";
    cout << s1.substr(0, 5) << endl;

    // 案例 获取字符串前后的东西
    string s2 = "hello&world";
    cout << s2.substr( 0,s2.find('&')) << endl;
    cout << s2.substr(s2.find('&') + 1, s1.size() ) << endl;

    return 0;
}

输出

相关推荐
ALex_zry5 分钟前
C++模板元编程实战技巧
网络·c++·windows
sg_knight6 分钟前
如何实现“秒传”与“断点续传”?MinIO + Java 实战进阶篇
java·开发语言·文件管理·minio·ftp·oss·文件传输
William Dawson6 分钟前
Java 后端高频 20 题超详细解析 ②
java·开发语言
ambition2024211 分钟前
斐波那契取模问题的深入分析:为什么提前取模是关键的
c语言·数据结构·c++·算法·图论
艾莉丝努力练剑12 分钟前
C++ 核心编程练习:从基础语法到递归、重载与宏定义
linux·运维·服务器·c语言·c++·学习
夜珀17 分钟前
OpenTiny NEXT 从入门到精通·第 4 篇
开发语言
牢姐与蒯21 分钟前
模板的进阶
c++
小樱花的樱花22 分钟前
1 项目概述
开发语言·c++·qt·ui
551只玄猫34 分钟前
【数学建模 matlab 实验报告10】插值
开发语言·数学建模·matlab·课程设计·插值·实验报告
ALex_zry35 分钟前
gRPC服务熔断与限流设计
c++·安全·grpc