C++ string类完全指南:从入门到精通

string类的基本概念

C++标准库中的string类是一个用于处理字符串的类,属于std命名空间。它封装了字符数组的操作,提供了丰富的成员函数,支持动态内存管理,避免了传统C风格字符串(如char*)的繁琐操作和内存泄漏风险。

string类的底层实现通常是动态数组,能够根据字符串长度自动调整内存大小。其设计遵循RAII(资源获取即初始化)原则,确保资源的自动释放。

string类的常用操作

初始化与赋值

string支持多种初始化方式:

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

赋值操作可以通过=assign()实现:

s1 = "World";                // 直接赋值
s3.assign(s1, 0, 3);         // 从s1的第0个字符开始,赋值3个字符

字符串连接

使用+运算符或append()方法:

std::string result = s2 + " " + s1;  
s2.append(s1);              // 将s1追加到s2末尾

访问字符

通过下标[]at()访问单个字符:

char c1 = s2[0];            // 访问第0个字符
char c2 = s2.at(1);          // 访问第1个字符(会检查边界)

字符串比较

使用==!=等运算符或compare()方法:

if (s1 == s2) { /* ... */ }  
int cmp = s1.compare(s2);    // 返回0表示相等,正数表示s1大,负数表示s1小

string类的高级功能

子串操作

substr()用于提取子串:

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

查找与替换

find()replace()实现查找与替换:

size_t pos = s1.find("lo");         // 查找子串"lo"的位置
if (pos != std::string::npos) {  
    s1.replace(pos, 2, "***");      // 替换找到的子串
}

容量管理

resize()reserve()调整字符串大小:

s1.resize(10);              // 调整长度为10,不足部分填充空字符
s1.reserve(100);            // 预分配100字节的内存

性能与优化建议

  • 避免频繁拼接:多次使用+拼接字符串会生成临时对象,推荐使用+=append()
  • 预分配内存:已知字符串长度时,使用reserve()减少动态分配的开销。
  • 移动语义:C++11后支持移动构造和移动赋值,减少拷贝开销。

与C风格字符串的互操作

string提供c_str()data()方法返回C风格字符串指针:

const char* ptr = s1.c_str(); // 返回以'\0'结尾的字符数组

总结

C++的string类提供了高效、安全的字符串操作接口,适合大多数场景。熟练掌握其用法可以显著提升代码的可读性和性能。

BbS.okacop020.info/PoSt/1120_577908.HtM
BbS.okacop021.info/PoSt/1120_085372.HtM
BbS.okacop022.info/PoSt/1120_510144.HtM
BbS.okacop023.info/PoSt/1120_071136.HtM
BbS.okacop024.info/PoSt/1120_398601.HtM
BbS.okacop025.info/PoSt/1120_674503.HtM
BbS.okacop026.info/PoSt/1120_781637.HtM
BbS.okacop027.info/PoSt/1120_483941.HtM
BbS.okacop028.info/PoSt/1120_808672.HtM
BbS.okacop029.info/PoSt/1120_196700.HtM
BbS.okacop020.info/PoSt/1120_492682.HtM
BbS.okacop021.info/PoSt/1120_591653.HtM
BbS.okacop022.info/PoSt/1120_698719.HtM
BbS.okacop023.info/PoSt/1120_490058.HtM
BbS.okacop024.info/PoSt/1120_687601.HtM
BbS.okacop025.info/PoSt/1120_384831.HtM
BbS.okacop026.info/PoSt/1120_368141.HtM
BbS.okacop027.info/PoSt/1120_334703.HtM
BbS.okacop028.info/PoSt/1120_527591.HtM
BbS.okacop029.info/PoSt/1120_412218.HtM
BbS.okacop020.info/PoSt/1120_941406.HtM
BbS.okacop021.info/PoSt/1120_758649.HtM
BbS.okacop022.info/PoSt/1120_049564.HtM
BbS.okacop023.info/PoSt/1120_690696.HtM
BbS.okacop024.info/PoSt/1120_186551.HtM
BbS.okacop025.info/PoSt/1120_973961.HtM
BbS.okacop026.info/PoSt/1120_324302.HtM
BbS.okacop027.info/PoSt/1120_437403.HtM
BbS.okacop028.info/PoSt/1120_370641.HtM
BbS.okacop029.info/PoSt/1120_420756.HtM
BbS.okacop020.info/PoSt/1120_442520.HtM
BbS.okacop021.info/PoSt/1120_715049.HtM
BbS.okacop022.info/PoSt/1120_996957.HtM
BbS.okacop023.info/PoSt/1120_539964.HtM
BbS.okacop024.info/PoSt/1120_150319.HtM
BbS.okacop025.info/PoSt/1120_535050.HtM
BbS.okacop026.info/PoSt/1120_149187.HtM
BbS.okacop027.info/PoSt/1120_533485.HtM
BbS.okacop028.info/PoSt/1120_024745.HtM
BbS.okacop029.info/PoSt/1120_212303.HtM
BbS.okacop020.info/PoSt/1120_525082.HtM
BbS.okacop021.info/PoSt/1120_762862.HtM
BbS.okacop022.info/PoSt/1120_715920.HtM
BbS.okacop023.info/PoSt/1120_646547.HtM
BbS.okacop024.info/PoSt/1120_878931.HtM
BbS.okacop025.info/PoSt/1120_664461.HtM
BbS.okacop026.info/PoSt/1120_291555.HtM
BbS.okacop027.info/PoSt/1120_379121.HtM
BbS.okacop028.info/PoSt/1120_441457.HtM
BbS.okacop029.info/PoSt/1120_494208.HtM
BbS.okacop020.info/PoSt/1120_309886.HtM
BbS.okacop021.info/PoSt/1120_437455.HtM
BbS.okacop022.info/PoSt/1120_767144.HtM
BbS.okacop023.info/PoSt/1120_200631.HtM
BbS.okacop024.info/PoSt/1120_380769.HtM
BbS.okacop025.info/PoSt/1120_060568.HtM
BbS.okacop026.info/PoSt/1120_504818.HtM
BbS.okacop027.info/PoSt/1120_589842.HtM
BbS.okacop028.info/PoSt/1120_208793.HtM
BbS.okacop029.info/PoSt/1120_296712.HtM
BbS.okacop020.info/PoSt/1120_692324.HtM
BbS.okacop021.info/PoSt/1120_221858.HtM
BbS.okacop022.info/PoSt/1120_592730.HtM
BbS.okacop023.info/PoSt/1120_298058.HtM
BbS.okacop024.info/PoSt/1120_305655.HtM
BbS.okacop025.info/PoSt/1120_883642.HtM
BbS.okacop026.info/PoSt/1120_831132.HtM
BbS.okacop027.info/PoSt/1120_318278.HtM
BbS.okacop028.info/PoSt/1120_746442.HtM
BbS.okacop029.info/PoSt/1120_022438.HtM
BbS.okacop030.info/PoSt/1120_983164.HtM
BbS.okacop031.info/PoSt/1120_258712.HtM
BbS.okacop032.info/PoSt/1120_259124.HtM
BbS.okacop033.info/PoSt/1120_854744.HtM
BbS.okacop034.info/PoSt/1120_811558.HtM
BbS.okacop035.info/PoSt/1120_874367.HtM
BbS.okacop036.info/PoSt/1120_734029.HtM
BbS.okacop037.info/PoSt/1120_636769.HtM
BbS.okacop038.info/PoSt/1120_708040.HtM
BbS.okacop039.info/PoSt/1120_470135.HtM

#牛客AI配图神器#

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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