C++字符串

字符串是C++编程中常见和重要的数据类型,本文将详细介绍C++中的字符串知识。

一、C风格字符串

C风格字符串指用字符数组存储的字符串,以空字符’\0’作为结束标记。

char str[6] = {'H', 'e', 'l', 'l','o', '\0'};
  • C风格字符串可以通过指针访问和修改
  • 函数如strlen、strcpy、strcat等可以操作C字符串
  • C++提供std::string类封装和操作C风格字符串

二、std::string类

std::string是C++原生提供的字符串类,它封装了C风格字符串,提供了对字符串的操作方法。

#include <string>
std::string str = "Hello";
  • 支持 ‘+=’、’+’、’>’等运算符进行字符串连接和比较
  • 提供了查询长度、访问指定索引、修改等方法
  • 支持直接初始化列表初始化
  • 可以直接传入和返回字符串类型

三、std::string构造和赋值

std::string str1; // 默认构造,空字符串
std::string str2 = "Hello"; // 从C字符串构造
std::string str3(5, 'a'); // 初始化5个'a'字符

str1 = str2; // 字符串赋值
str1.assign("World"); // assign方法赋值

四、std::string访问元素

std::string str = "Hello";

char c = str[0]; // 'H'
char c = str.at(1); // 'e',范围检查

str[0] = 'h'; // 修改字符
str.at(0) = 'h';

字符串可以像数组一样通过[]访问和修改元素。

五、std::string操作方法

std::string str = "Hello"; 

str.append(" World!"); // 追加字符串
str.insert(5, " C++"); // 插入字符串

str.erase(5, 3); // 删除从5开始的3个字符

if(str.find("C++") != std::string::npos) // 查找子串
  str.replace(str.find("C++"), 3, "Java"); // 替换子串

if(str.empty()) // 判断是否为空

str.clear(); // 清空字符串

std::string提供了多种实用的字符串操作方法。

学习并使用好std::string类,可以大大提高C++代码的简洁性和执行效率。熟练掌握字符串的操作可以解决编码中许多实际问题。