C++ string类完全指南

string类的基本概念

C++中的string类是标准模板库(STL)的一部分,定义在<string>头文件中。它是对C风格字符串(字符数组)的封装,提供了更安全、更便捷的字符串操作方式。string类自动管理内存,避免了手动分配和释放内存的麻烦。

string类的常用操作

初始化与赋值
可以通过多种方式初始化string对象:

std::string s1;             // 默认初始化,空字符串
std::string s2("Hello");    // 从C风格字符串初始化
std::string s3(s2);         // 拷贝构造
std::string s4(5, 'a');     // 重复字符初始化

赋值操作支持直接赋值或通过assign()方法:

s1 = "World";
s2.assign(s1.begin(), s1.end());

访问字符
通过[]运算符或at()方法访问字符,后者会进行边界检查:

char c1 = s1[0];    // 无边界检查
char c2 = s1.at(1); // 有边界检查,越界抛出异常

字符串连接
使用+运算符或append()方法连接字符串:

std::string s5 = s1 + " " + s2;
s1.append(s2);

string类的常用方法

查找与替换
find()方法用于查找子字符串,返回首次出现的位置(未找到返回string::npos):

size_t pos = s1.find("lo");
if (pos != std::string::npos) {
    s1.replace(pos, 2, "LL"); // 替换子字符串
}

子字符串提取
substr()方法用于提取子字符串:

std::string sub = s1.substr(1, 3); // 从位置1开始,提取3个字符

大小与容量
size()length()返回字符串长度,capacity()返回当前分配的内存大小:

size_t len = s1.size();
size_t cap = s1.capacity();

string类的性能优化

预分配内存
通过reserve()方法预分配内存,避免频繁扩容:

std::string s;
s.reserve(100); // 预分配100字节

移动语义
C++11引入的移动语义可以高效转移字符串资源:

std::string s6 = std::move(s1); // s1的资源转移到s6,s1变为空

string类与C风格字符串的转换

转换为C风格字符串
通过c_str()data()方法获取C风格字符串(以\0结尾):

const char* cstr = s1.c_str();

从C风格字符串构造
直接传入C风格字符串即可构造string对象:

std::string s7("C-style string");

注意事项

  • string类内部以\0结尾,但不需要手动添加。
  • 避免在循环中频繁拼接字符串,可能导致性能问题。
  • 使用std::getline()读取包含空格的字符串,而非>>运算符。

示例代码

以下是一个完整的示例,展示string类的常见用法:

#include <iostream>
#include <string>

int main() {
    std::string s1 = "Hello";
    std::string s2 = "World";
    std::string s3 = s1 + " " + s2;
    
    std::cout << s3 << std::endl; // 输出: Hello World
    
    s3.replace(6, 5, "C++");
    std::cout << s3 << std::endl; // 输出: Hello C++
    
    return 0;
}

BbS.okane367.info/PoSt/1121_088390.HtM
BbS.okane368.info/PoSt/1121_082852.HtM
BbS.okane369.info/PoSt/1121_070380.HtM
BbS.okane370.info/PoSt/1121_443926.HtM
BbS.okane371.info/PoSt/1121_700696.HtM
BbS.okane372.info/PoSt/1121_036194.HtM
BbS.okane373.info/PoSt/1121_352327.HtM
BbS.okane374.info/PoSt/1121_751843.HtM
BbS.okane375.info/PoSt/1121_490506.HtM
BbS.okane376.info/PoSt/1121_368983.HtM
BbS.okane367.info/PoSt/1121_657745.HtM
BbS.okane368.info/PoSt/1121_491918.HtM
BbS.okane369.info/PoSt/1121_929833.HtM
BbS.okane370.info/PoSt/1121_031391.HtM
BbS.okane371.info/PoSt/1121_399263.HtM
BbS.okane372.info/PoSt/1121_848533.HtM
BbS.okane373.info/PoSt/1121_651918.HtM
BbS.okane374.info/PoSt/1121_708914.HtM
BbS.okane375.info/PoSt/1121_737495.HtM
BbS.okane376.info/PoSt/1121_608728.HtM
BbS.okane367.info/PoSt/1121_353569.HtM
BbS.okane368.info/PoSt/1121_844661.HtM
BbS.okane369.info/PoSt/1121_714277.HtM
BbS.okane370.info/PoSt/1121_311204.HtM
BbS.okane371.info/PoSt/1121_294810.HtM
BbS.okane372.info/PoSt/1121_735865.HtM
BbS.okane373.info/PoSt/1121_866959.HtM
BbS.okane374.info/PoSt/1121_964184.HtM
BbS.okane375.info/PoSt/1121_000657.HtM
BbS.okane376.info/PoSt/1121_916557.HtM
BbS.okane367.info/PoSt/1121_911123.HtM
BbS.okane368.info/PoSt/1121_626976.HtM
BbS.okane369.info/PoSt/1121_980885.HtM
BbS.okane370.info/PoSt/1121_302755.HtM
BbS.okane371.info/PoSt/1121_747542.HtM
BbS.okane372.info/PoSt/1121_084830.HtM
BbS.okane373.info/PoSt/1121_331159.HtM
BbS.okane374.info/PoSt/1121_372824.HtM
BbS.okane375.info/PoSt/1121_947257.HtM
BbS.okane376.info/PoSt/1121_308304.HtM
BbS.okane367.info/PoSt/1121_736160.HtM
BbS.okane368.info/PoSt/1121_345574.HtM
BbS.okane369.info/PoSt/1121_182084.HtM
BbS.okane370.info/PoSt/1121_856568.HtM
BbS.okane371.info/PoSt/1121_890179.HtM
BbS.okane372.info/PoSt/1121_441273.HtM
BbS.okane373.info/PoSt/1121_031209.HtM
BbS.okane374.info/PoSt/1121_782743.HtM
BbS.okane375.info/PoSt/1121_013555.HtM
BbS.okane376.info/PoSt/1121_244442.HtM
BbS.okane367.info/PoSt/1121_095848.HtM
BbS.okane368.info/PoSt/1121_783608.HtM
BbS.okane369.info/PoSt/1121_844378.HtM
BbS.okane370.info/PoSt/1121_115977.HtM
BbS.okane371.info/PoSt/1121_403209.HtM
BbS.okane372.info/PoSt/1121_081702.HtM
BbS.okane373.info/PoSt/1121_077932.HtM
BbS.okane374.info/PoSt/1121_757534.HtM
BbS.okane375.info/PoSt/1121_999682.HtM
BbS.okane376.info/PoSt/1121_378521.HtM
BbS.okane377.info/PoSt/1121_405585.HtM
BbS.okane378.info/PoSt/1121_330648.HtM
BbS.okane379.info/PoSt/1121_068309.HtM
BbS.okane380.info/PoSt/1121_470559.HtM
BbS.okane381.info/PoSt/1121_405304.HtM
BbS.okane382.info/PoSt/1121_018010.HtM
BbS.okane383.info/PoSt/1121_686217.HtM
BbS.okane384.info/PoSt/1121_715369.HtM
BbS.okane385.info/PoSt/1121_431329.HtM
BbS.okane386.info/PoSt/1121_208524.HtM
BbS.okane377.info/PoSt/1121_012007.HtM
BbS.okane378.info/PoSt/1121_743685.HtM
BbS.okane379.info/PoSt/1121_577765.HtM
BbS.okane380.info/PoSt/1121_615686.HtM
BbS.okane381.info/PoSt/1121_533072.HtM
BbS.okane382.info/PoSt/1121_526722.HtM
BbS.okane383.info/PoSt/1121_362552.HtM
BbS.okane384.info/PoSt/1121_084500.HtM
BbS.okane385.info/PoSt/1121_154117.HtM
BbS.okane386.info/PoSt/1121_903321.HtM

#牛客AI配图神器#

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务