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

C++ 动态字符串String的介绍及经典用法展示

std::string:

在C++中,std::string是标准模板库(STL)中的一个类,用于表示和操作字符串。std::string提供了丰富的功能来处理文本数据,包括字符串的创建、修改、搜索、比较和转换等操作。

std::string的特点:

1.动态字符串std::string是一个动态字符串类,它可以根据需要自动调整大小。

2.操作简便std::string提供了类似于C风格字符串的接口,使得字符串操作非常直观和方便。

3.安全性std::string避免了C风格字符串的许多安全问题,如缓冲区溢出。

4.丰富的成员函数std::string提供了许多成员函数,用于执行各种字符串操作,如查找、替换、连接、比较等。

5.迭代器支持std::string支持迭代器,可以使用STL算法对字符串进行操作。

std::string的常见用法:

1.字符串操作:使用std::string进行字符串的创建、修改和操作。

2.字符串连接:使用+运算符或append成员函数将多个字符串连接起来。

3.字符串搜索:使用findrfindfind_first_offind_last_of等成员函数在字符串中搜索子串。

4.字符串比较:使用==!=<>等运算符比较两个字符串。

5.字符串转换:使用to_stringstoistolstoll等函数进行字符串与数值之间的转换。

std::string的经典C++用法:

在C++中,std::string是标准模板库(STL)中的一个类,用于表示和操作字符串。std::string提供了丰富的功能来处理文本数据,包括字符串的创建、修改、搜索、比较和转换等操作。以下是一些std::string的常见用法和操作示例:

创建和初始化字符串

#include <iostream>
#include <string>int main() {// 使用默认构造函数创建空字符串std::string str1;// 使用字符串字面量初始化字符串std::string str2 = "Hello, World!";// 使用C风格字符串初始化字符串const char* cstr = "Hello, C++!";std::string str3(cstr);// 使用另一个字符串初始化字符串std::string str4(str2);// 使用字符串字面量的子串初始化字符串std::string str5(str2, 7, 5); // 从位置7开始的5个字符// 使用迭代器范围初始化字符串std::string str6(str2.begin() + 7, str2.end());// 输出字符串std::cout << "str1: " << str1 << std::endl;std::cout << "str2: " << str2 << std::endl;std::cout << "str3: " << str3 << std::endl;std::cout << "str4: " << str4 << std::endl;std::cout << "str5: " << str5 << std::endl;std::cout << "str6: " << str6 << std::endl;return 0;
}

字符串修改

#include <iostream>
#include <string>int main() {std::string str = "Hello, World!";// 插入字符str.insert(7, ", ");// 替换子串str.replace(7, 5, "C++");// 删除子串str.erase(7, 5);// 清空字符串str.clear();// 输出修改后的字符串std::cout << "Modified string: " << str << std::endl;return 0;
}

字符串搜索

#include <iostream>
#include <string>int main() {std::string str = "Hello, World!";// 查找子串size_t pos = str.find("World");// 查找子串的逆序size_t rpos = str.rfind("World");// 查找字符size_t cpos = str.find('W');// 查找字符的逆序size_t rcpos = str.rfind('W');// 输出搜索结果std::cout << "Position of 'World': " << pos << std::endl;std::cout << "Reverse position of 'World': " << rpos << std::endl;std::cout << "Position of 'W': " << cpos << std::endl;std::cout << "Reverse position of 'W': " << rcpos << std::endl;return 0;
}

字符串比较

#include <iostream>
#include <string>int main() {std::string str1 = "Hello, World!";std::string str2 = "Hello, C++!";// 比较两个字符串if (str1 == str2) {std::cout << "str1 and str2 are equal." << std::endl;} else {std::cout << "str1 and str2 are not equal." << std::endl;}// 使用比较运算符if (str1 < str2) {std::cout << "str1 is less than str2." << std::endl;} else if (str1 > str2) {std::cout << "str1 is greater than str2." << std::endl;} else {std::cout << "str1 is equal to str2." << std::endl;}return 0;
}

字符串转换

#include <iostream>
#include <string>
#include <sstream>int main() {std::string str = "123";int num;// 将字符串转换为整数std::istringstream iss(str);iss >> num;// 输出转换后的整数std::cout << "Integer: " << num << std::endl;return 0;
}

字符串连接

#include <iostream>
#include <string>int main() {std::string str1 = "Hello, ";std::string str2 = "World!";// 使用+运算符连接字符串std::string str3 = str1 + str2;// 使用append成员函数连接字符串str1.append(str2);// 输出连接后的字符串std::cout << "Concatenated string: " << str3 << std::endl;std::cout << "Concatenated string: " << str1 << std::endl;return 0;
}

        以上代码展示了std::string的一些常见用法,包括创建和初始化字符串、修改字符串、搜索字符串、比较字符串、转换字符串以及连接字符串。std::string类提供了非常丰富的功能,使得字符串操作变得非常方便和强大。在实际编程中,可以根据需要选择合适的方法来处理字符串。

http://www.lryc.cn/news/334146.html

相关文章:

  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • 【国产AI持续突破带动互联网智能生态进入正循环】
  • 全志 Linux Qt
  • 微功耗数据监测终端可应用在哪些场景?
  • Windows下Docker安装Kafka3+集群
  • 关于前端资源文件打包问题
  • 蓝桥杯备考随手记: 常用的字符串排序方式
  • Linux--进程(2)
  • 贪心算法思想
  • PKI:构建数字安全基石的关键技术
  • vue中实现路由鉴权和不同用户登录
  • Golang 开发实战day06 - Boolean Conditional
  • 内容多样化的秘密:Kompas.ai如何拓展你的内容形式
  • OneFlow深度学习框架介绍
  • 基于SSM的宠物管理系统
  • 【第十二篇】使用BurpSuite实现CSRF(实战案例)
  • css 手写返回箭头
  • 爬虫逆向非对称加密和对称加密案例
  • 大数据基础设施搭建 - Spark
  • 轻松上手Jackjson(珍藏版)
  • Pytorch数据结构:Tensor(张量)及其维度和数据类型
  • 【THM】Protocols and Servers 2(协议和服务器 2
  • 阿里云服务器可以干什么?阿里云服务器主要用途是干嘛的?
  • LeetCode hoot100-22
  • 蓝桥杯 经验技巧篇
  • QMC5883芯片I2C驱动开发指南
  • 缓存击穿以及解决方案
  • 【电路笔记】-逻辑非门
  • vue-element-admin vue3版本搭建
  • 大话设计模式——11.桥接模式(Bridge Pattern)