首页 > 编程语言 >如何使用C++中的字符串类(如std::string)

如何使用C++中的字符串类(如std::string)

时间:2024-07-20 21:29:47浏览次数:16  
标签:std string C++ str cpp World Hello

在C++中,std::string 类是标准模板库(Standard Template Library, STL)的一部分,它提供了对字符串的灵活处理。std::string 使得字符串的存储、操作、比较、查找等任务变得更加方便和高效。下面将介绍如何使用 std::string 类。

1. 包含头文件

要使用 std::string,首先需要包含其对应的头文件 <string>


cpp复制代码

#include <string>

2. 声明和初始化

声明

cpp复制代码

std::string str; // 声明一个空字符串
初始化
  • 直接赋值:

cpp复制代码

std::string str = "Hello, World!";
  • 使用构造函数:

cpp复制代码

std::string str("Hello, World!");
  • 使用 std::string 的其他构造函数,如从字符数组初始化:

cpp复制代码

char arr[] = "Hello, World!";
std::string str(arr);

3. 字符串操作

连接字符串

使用 + 操作符或者 append() 成员函数。


cpp复制代码

std::string str1 = "Hello, ";
std::string str2 = "World!";
std::string str3 = str1 + str2; // 使用 + 操作符
std::string str4 = "Hello, ";
str4.append("World!"); // 使用 append() 函数
获取字符串长度

使用 size() 或 length() 成员函数。


cpp复制代码

std::string str = "Hello, World!";
std::size_t len = str.size(); // 或 str.length();
字符串比较

使用 ==!=<><=>= 操作符或者 compare() 成员函数。


cpp复制代码

std::string str1 = "apple";
std::string str2 = "banana";
if (str1 < str2) {
// str1 小于 str2
}
int result = str1.compare(str2); // 如果 str1 小于 str2,返回负值;如果相等,返回 0;如果大于,返回正值。
访问字符串中的字符

使用下标操作符 [] 或 at() 成员函数(at() 会进行越界检查)。


cpp复制代码

std::string str = "Hello";
char c = str[0]; // 使用下标操作符
char d = str.at(1); // 使用 at() 函数

4. 修改字符串

替换字符串

使用 replace() 成员函数。


cpp复制代码

std::string str = "Hello, World!";
str.replace(7, 5, "C++"); // 从索引 7 开始,替换长度为 5 的子串为 "C++"
插入和删除
  • 插入:使用 insert() 成员函数。

cpp复制代码

std::string str = "Hello";
str.insert(5, " World"); // 在索引 5 的位置插入 " World"
  • 删除:使用 erase() 成员函数。

cpp复制代码

std::string str = "Hello, World!";
str.erase(7, 5); // 从索引 7 开始,删除长度为 5 的子串

5. 查找字符串

使用 find()rfind()find_first_of()find_last_of()find_first_not_of()find_last_not_of() 等成员函数。


cpp复制代码

std::string str = "Hello, World!";
std::size_t pos = str.find("World"); // 查找 "World" 第一次出现的位置

std::string 类提供的功能远不止这些,但以上介绍的是最基本和最常用的操作。通过查阅 C++ 标准库文档,你可以了解到更多高级特性和用法。

标签:std,string,C++,str,cpp,World,Hello
From: https://blog.csdn.net/2402_84885073/article/details/140575225

相关文章

  • 掌握 C++ 异常艺术:构建健壮程序的秘诀与实战策略「一」
    以下内容为本人的烂笔头,如需要转载,请全文无改动地复制粘贴,原文链接微信公众号「ENG八戒」https://mp.weixin.qq.com/s/WC8CThJ77oHMsCSH0CBzsQ在过去几十年的编程历史中,异常处理的演变仿佛一场文明的进化史,它不仅仅是技术的革新,更是编程思想与哲学的深刻体现。从古早的错......
  • Android C++系列:Linux文件系统(二)
    1.VFS虚拟文件系统Linux支持各种各样的文件系统格式,如ext2、ext3、reiserfs、FAT、NTFS、iso9660等等,不同的磁盘分区、光盘或其它存储设备都有不同的文件系统格式,然而这些文件系统都可以mount到某个目录下,使我们看到一个统一的目录树,各种文件系统上的目录和文件我们用l......
  • Android C++系列:函数返回值注意事项
    1.背景函数返回值就是使用return语句终止正在执行的函数,看是很简单的问题有什么说的呢?因为越是简单的问题里面越是有一些不易发现的坑。比如在循环中使用return语句:boolfindChar(conststring&str,constcharc){autosize=str.size();for(decltype(size......
  • 【C++BFS 回溯】756. 金字塔转换矩阵
    本文涉及知识点C++BFS算法C++回溯LeetCode756.金字塔转换矩阵你正在把积木堆成金字塔。每个块都有一个颜色,用一个字母表示。每一行的块比它下面的行少一个块,并且居中。为了使金字塔美观,只有特定的三角形图案是允许的。一个三角形的图案由两个块和叠在上面的单......
  • GESP C++ 二级真题(2023年12月)T1 小杨做题
    问题描述:为了准备考试,小杨每天都要做题。第一天做了a道题;第二天做了b道题;从第三天起,小杨每天做的题目数量是前两天的总和。此外,小杨还规定当自己某一天做了大于或等于m题时,接下来的日子,他就不做题了。请问到了第n天,小杨总共做了多少道题?输入描述:总共4行。第一行一个整数a,......
  • 使用GDAL(C++库)从末尾行开始向上读取图像数据
    使用GDAL(C++库)从末尾行读取图像数据OpenCV等图像库默认的读取方式都是从第一行开始,逐行读取数据(自顶向下),填充到内存缓冲区;对于某些特殊应用,需要反行序读取(从末尾行读到起始行)的图像数据结果。GDAL提供了灵活的栅格数据读取方式RasterIO,下面介绍RasterIO的调用方式,以及如何......
  • 在VS2022中通过Nuget将vcpkg环境集成/卸载到c++项目
    在VS2022中通过Nuget将vcpkg环境集成/卸载到c++项目vcpkg是微软和C++社区维护的免费开源C/C++包管理器。利用它,可以一条命令编译安装用户所需的库;提供CMake配置文件;并且对于Windows开发者,在VisualStudio中集成后还可以自动链接静态库,非常方便易用。一般而言,开发者仅需要......
  • C++的输入输出(ACM模式)
    原文1.输入首先,在C++语言中,要使用标准的输入,需要包含头文件<iostream>1.1cincin是c++中标准的输入流对象,cin有两个用法,单独读入和批量读入cin的原理:简单来讲,有一个缓冲区,键盘输入的数据会先存到缓冲区,用cin可以从缓冲区中读取数据。注意:cin可以连续从键盘读入数据cin......
  • 如何编写一个C++程序来整蛊你的好基友
    如何编写一个C++程序来整蛊你的好基友如何编写一个C++程序来整蛊你的好基友整蛊按照危险性来排序3星类1.每行输出一句2.一直输出,不换行3.给控制台换一个颜色(较有威慑力)颜色代码4.扫盘(配上第三个效果更好,可以用来装B)4星类(含部分解药)弹窗类弹窗代码按下反馈键判定另......
  • c++里数的存储
    hello,大家好啊,这里是文宇,不是文字,是文宇哦。C++中的数的存储方式涵盖了整数、浮点数、字符等多种类型。每种类型的数有不同的位数和存储规则。下面将详细介绍C++中数的存储。首先,整数类型的存储通常使用二进制来表示。C++中提供了多种整数类型,包括char、short、int、longlon......