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

输出

相关推荐
cpp_25016 分钟前
P1540 [NOIP 2010 提高组] 机器翻译
数据结构·c++·算法·队列·noip·洛谷题解
深念Y11 分钟前
开发者如何清理和迁移C盘堆积的垃圾
c语言·开发语言
2501_9095091027 分钟前
DAY 28
开发语言·python
user-猴子33 分钟前
从零构建 2048 游戏,解析“Python-Use”范式的完整闭环
开发语言·python·游戏
咕白m62540 分钟前
通过 C++ 写入数据到 Excel 文档
c++·后端
qq_401700411 小时前
Qt容器性能优化:QVector、QHash、QMap到底应该怎么选?
开发语言·qt·性能优化
星栈独行1 小时前
Node 接口该写同步还是异步?
服务器·开发语言·后端·程序人生·node.js
这就是佬们吗1 小时前
Python入门③-运算符、条件与循环
开发语言·数据库·vscode·python·pycharm·编辑器
小刘学技术1 小时前
AI人工智能中的类别不平衡问题:成因、影响与解决方案
开发语言·人工智能·python·机器学习
兰令水1 小时前
hot100【acm版】【2026.7.21打卡-java版本】
java·开发语言·算法·leetcode·面试