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

输出

相关推荐
九转成圣3 小时前
Java 性能优化实战:如何将海量扁平数据高效转化为类目字典树?
java·开发语言·json
SmartRadio3 小时前
ESP32-S3 双模式切换实现:兼顾手机_路由器连接与WiFi长距离通信
开发语言·网络·智能手机·esp32·长距离wifi
laowangpython3 小时前
Rust 入门:GitHub 热门内存安全编程语言
开发语言·其他·rust·github
我叫汪枫3 小时前
在后台管理系统中,如何递归和选择保留的思路来过滤菜单
开发语言·javascript·node.js·ecmascript
_.Switch3 小时前
东方财富股票数据JS逆向:secids字段和AES加密实战
开发语言·前端·javascript·网络·爬虫·python·ecmascript
软件技术NINI3 小时前
webkit简介及工作流程
开发语言·前端·javascript·udp·ecmascript·webkit·yarn
Brendan_0013 小时前
JavaScript的Stomp.over
开发语言·javascript·ecmascript
念2343 小时前
f5 shape分析
开发语言·javascript·ecmascript
苍穹之跃4 小时前
某量JS逆向
开发语言·javascript·ecmascript
思茂信息4 小时前
CST软件如何进行参数化扫描?
运维·开发语言·javascript·windows·ecmascript·软件工程·软件需求