C++ 字符串(string)使用

在C++中,字符串(String)是表示文本数据的关键组成部分。C++标准库提供了std::string类,它是处理字符串的首选方式,相较于传统的C风格字符串(字符数组),std::string提供了更多的功能、更高的安全性和便捷性。

字符串定义和初始化

cpp 复制代码
string str="Hello world!";
cpp 复制代码
string str("Hello world");

拼接字符串

cpp 复制代码
string str1="Hello";
string str2=" world!";
str1 = str1 + str2;    //Hello world!

访问与修改字符串中的字符

cpp 复制代码
string str = "Hello World!";
str[6] = 'w';// 将'W'改为小写'w'

提取子字符串

cpp 复制代码
string str = "Hello World!";
str = str.substr(0,5);// 从索引0开始提取5个字符

查找子字符串

cpp 复制代码
string str = "Hello World!";
size_t pos = str.find("llo");// 查找"llo"的位置,返回索引2

字符串比较

C++中的字符串比较默认是按照字典序进行比较,也就是比较字符串的ASCII码值。

使用运算符比较
cpp 复制代码
    string str1 = "abc";
    string str2 = "abc";
    bool b = str1 > str2;
    b = str1 < str2;
    b = str1 == str2;
使用compare函数比较
cpp 复制代码
 string s1 = "babc";
 string s2 = "bcabc";
 int n = s1.compare(s2); //s1和s2比较

返回值:

如果s1和s2相等,compare()返回 0。

如果s1大于s2,compare()返回 1。

如果s1小于s2,compare()返回 -1。

获取字符串长度

使用成员方法size、length

cpp 复制代码
string s1 = "babca";
cout << s1.size() << endl;
cout << s1.length() << endl;

字符串转大小写

使用的是 transform 函数配合 ::toupper 或 ::tolower 函数来完成这个任务。

cpp 复制代码
#include <iostream>
#include <algorithm>
using namespace std;

int main() {
    string s1 = "bABca";
    transform(s1.begin(), s1.end(), s1.begin(), ::toupper); //转大写
    transform(s1.begin(), s1.end(), s1.begin(), ::tolower); //转小写
    cout << s1;
}
  • #include <algorithm>:用于 transform 函数。
  • transform 函数接受四个参数:输入范围的起始迭代器、输入范围的结束迭代器、输出范围的起始迭代器、以及一个用于转换每个元素的函数。
相关推荐
玖釉-2 小时前
[Vulkan 学习之路] 08 - 给图片穿马甲:图像视图 (Image Views)
c++·windows·图形渲染
m0_748250033 小时前
C++ 信号处理
c++·算法·信号处理
yuyanjingtao3 小时前
动态规划 背包 之 凑钱
c++·算法·青少年编程·动态规划·gesp·csp-j/s
scx201310044 小时前
20260112树状数组总结
数据结构·c++·算法·树状数组
星竹晨L4 小时前
【C++内存安全管理】智能指针的使用和原理
开发语言·c++
智者知已应修善业4 小时前
【C语言 dfs算法 十四届蓝桥杯 D飞机降落问题】2024-4-12
c语言·c++·经验分享·笔记·算法·蓝桥杯·深度优先
玖釉-5 小时前
[Vulkan 学习之路] 09 - 显卡的流水线工厂:图形管线概览 (Graphics Pipeline)
c++·windows·图形渲染
无限进步_6 小时前
【C语言&数据结构】二叉树遍历:从前序构建到中序输出
c语言·开发语言·数据结构·c++·算法·github·visual studio
天赐学c语言6 小时前
1.14 - 用栈实现队列 && 对模板的理解以及模板和虚函数区别
c++·算法·leecode
玖釉-6 小时前
[Vulkan 学习之路] 02 - 万物起源:创建 Vulkan 实例 (Instance)
c++·windows·图形渲染