当前位置: 首页 > article >正文

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

输出


http://www.kler.cn/a/444033.html

相关文章:

  • 计算机网络 八股青春版
  • SYD881X RTC定时器事件在调用timeAppClockSet后会出现比较大的延迟
  • JVM性能优化一:初识内存泄露-内存溢出-垃圾回收
  • RAG开发中,如何用Milvus 2.5 BM25算法实现混合搜索
  • 搭建MPI/CUDA开发环境
  • C++ 智能指针(高频面试题)
  • 【Web前端】Web API:构建Web应用核心
  • 6UCPCI板卡设计方案:8-基于双TMS320C6678 + XC7K420T的6U CPCI Express高速数据处理平台
  • docker拉取rabbitmq镜像安装延迟队列插件
  • 初学stm32 --- 系统时钟配置
  • 从零搭建CBAM、SENet、STN、transformer、mobile_vit、simple_vit、vit模型(Pytorch代码示例)
  • 多种机器学习模型预测房价
  • 力扣--LCR 129.字母迷宫
  • Go怎么做性能优化工具篇之pprof
  • C# 文件系统I/O操作--File类与FileInfo类
  • 【Tomcat】第三站:注解
  • 两款轻量级数据库SQLite 和 TinyDB,简单!实用!
  • thinkphp5验证码captcha无法显示
  • 字符串类算法
  • Connection lease request time out 问题分析
  • 基于java的CRM客户关系管理系统的设计与实现
  • 计算机必背单词——云计算和虚拟化
  • 数据结构:双向带头循环链表的增删查改
  • 使用Maven打包javaagent.jar
  • 关于解决VScode中python解释器中的库Not Found的问题
  • C# 开发应用篇——C# 基于WPF实现数据记录导出excel详解