C++中字符串常用操作

简介: C++中字符串常用操作

一、引言

在C++编程中,字符串是一种常见且重要的数据类型。C++标准库提供了std::string类,该类封装了对字符串的各种操作,使得字符串的处理变得方便和高效。本文将介绍C++中std::string类的一些常用操作,包括字符串的创建、修改、访问、查找、连接和比较等。

二、字符串的创建和初始化

在C++中,可以通过多种方式创建和初始化std::string对象。

默认构造函数

cpp

 

std::string str; // 创建一个空字符串

使用C风格字符串初始化

cpp

 

const char* cstr = "Hello, World!";

 

std::string str(cstr); // 使用C风格字符串初始化

使用字符数组初始化

cpp

 

char arr[] = {'H', 'e', 'l', 'l', 'o'};

 

std::string str(arr, 5); // 使用字符数组和长度初始化

使用单个字符重复初始化

cpp

 

std::string str(10, 'a'); // 创建一个包含10个'a'的字符串

三、字符串的修改

std::string类提供了多种方法来修改字符串的内容。

追加字符串

cpp

 

std::string str = "Hello";

 

str += ", World!"; // 追加字符串

插入字符串

cpp

 

std::string str = "Hello";

 

str.insert(5, " World"); // 在索引5处插入字符串

替换字符串

cpp

 

std::string str = "Hello, World!";

 

str.replace(7, 5, "C++"); // 从索引7开始,替换5个字符为"C++"

删除字符串

cpp

 

std::string str = "Hello, World!";

 

str.erase(7, 5); // 从索引7开始,删除5个字符

四、字符串的访问

std::string类提供了多种方式来访问字符串中的字符。

通过索引访问

cpp

 

std::string str = "Hello";

 

char c = str[1]; // 访问索引1处的字符,即'e'

通过迭代器访问

cpp

 

std::string str = "Hello";

 

for (std::string::iterator it = str.begin(); it != str.end(); ++it) {

 

char c = *it; // 通过迭代器访问字符

 

// ...

 

}

使用at()函数访问(带边界检查)

cpp

 

std::string str = "Hello";

 

char c = str.at(1); // 访问索引1处的字符,如果越界则抛出异常

五、字符串的查找

std::string类提供了多种方法来查找字符串中的子串或字符。

查找子串

cpp

 

std::string str = "Hello, World!";

 

size_t pos = str.find("World"); // 查找"World"子串的起始位置

 

if (pos != std::string::npos) {

 

// 找到子串,进行处理

 

}

查找字符

cpp

 

std::string str = "Hello";

 

size_t pos = str.find('o'); // 查找字符'o'的首次出现位置

 

if (pos != std::string::npos) {

 

// 找到字符,进行处理

 

}

六、字符串的连接和比较

连接字符串

cpp

 

std::string str1 = "Hello";

 

std::string str2 = " World!";

 

std::string str3 = str1 + str2; // 连接两个字符串

比较字符串

cpp

 

std::string str1 = "apple";

 

std::string str2 = "banana";

 

 

 

if (str1 == str2) {

 

// 相等

 

} else if (str1 < str2) {

 

// str1小于str2

 

} else {

 

// str1大于str2

 

}

七、其他常用操作

除了上述操作外,std::string类还提供了许多其他常用操作,如获取字符串长度(length()size())、清空字符串(clear())、转换为C风格字符串(`c

 

目录
相关文章
|
3月前
|
搜索推荐 编译器 C语言
【C++核心】特殊的元素集合-数组与字符串详解
这篇文章详细讲解了C++中数组和字符串的基本概念、操作和应用,包括一维数组、二维数组的定义和使用,以及C风格字符串和C++字符串类的对比。
95 4
|
2月前
|
缓存 网络协议 API
C/C++ StringToAddress(字符串转 boost::asio::ip::address)
通过上述步骤和示例代码,你可以轻松地在C++项目中实现从字符串到 `boost::asio::ip::address`的转换,从而充分利用Boost.Asio库进行网络编程。
75 0
|
2月前
|
编译器 C语言 C++
C/C++数字与字符串互相转换
C/C++数字与字符串互相转换
|
3月前
|
C++
HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具
HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具
|
3月前
|
存储 C++
C++(五)String 字符串类
本文档详细介绍了C++中的`string`类,包括定义、初始化、字符串比较及数值与字符串之间的转换方法。`string`类简化了字符串处理,提供了丰富的功能如字符串查找、比较、拼接和替换等。文档通过示例代码展示了如何使用这些功能,并介绍了如何将数值转换为字符串以及反之亦然的方法。此外,还展示了如何使用`string`数组存储和遍历多个字符串。
|
5月前
|
算法 C++
2730. 找到最长的半重复子字符串(c++,滑动窗口)
2730. 找到最长的半重复子字符串(c++,滑动窗口)
|
5月前
|
C++
567. 字符串的排列(c++)滑动窗口
567. 字符串的排列(c++)滑动窗口
|
5月前
|
编译器 C++
【C++】string类的使用④(字符串操作String operations )
这篇博客探讨了C++ STL中`std::string`的几个关键操作,如`c_str()`和`data()`,它们分别返回指向字符串的const char*指针,前者保证以&#39;\0&#39;结尾,后者不保证。`get_allocator()`返回内存分配器,通常不直接使用。`copy()`函数用于将字符串部分复制到字符数组,不添加&#39;\0&#39;。`find()`和`rfind()`用于向前和向后搜索子串或字符。`npos`是string类中的一个常量,表示找不到匹配项时的返回值。博客通过实例展示了这些函数的用法。
|
6月前
|
C++ 容器
C++字符串string容器(构造、赋值、拼接、查找、替换、比较、存取、插入、删除、子串)
C++字符串string容器(构造、赋值、拼接、查找、替换、比较、存取、插入、删除、子串)
|
6月前
|
编译器 C++
【C++进阶】深入STL之string:模拟实现走进C++字符串的世界
【C++进阶】深入STL之string:模拟实现走进C++字符串的世界
42 1