尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

string略解

string略解
📅 发布时间:2026/6/19 13:18:18

string

字符串类型,下标从0开始。

函数用法

定义

#include <iostream>
#include <string>string s;

初始化

string s="Hello,World!";sting a="Hello,";
string b="World!";
string s=a+b;string s("Hello,World!");
//上述三种s等价

输入

cin>>s;
//遇到空格或换行就截止
getline(cin,s);
//遇到换行才会截止

获取长度

int len=s.size();int len=s.length();
//上述代码等价

size(),length 返回值:int

检查空串

if(s.empty()) printf("No");
else printf("Yes");
//空串输出No,非空串输出Yes

empty() 返回值:bool,空串返回1,非空返回0

访问指定字符

cout<<s[i]; //访问下标为i的元素cout<<s.at(i); //访问下标为i的元素
//上述代码等价

operator[],at() 返回值:char

截取子串

string sub=s.substr(i1,i2); //截取下标从i1到i2的字符

substr() 返回值:string,为截取到的字符串

查找字符

//查找子字符串在字符串中首次出现的位置
int id=s.find("sub"); //寻找sub在原字符串中首次出现的位置//查找子字符串在字符串中最后一次出现的位置
int id=s.rfind("sub"); //寻找sub在原字符串中最后一次出现的位置

find(),rfind() 返回值:int,返回该子串首位在原字符串中的下标,如果目标不存在则返回-1

替换字符

//全部替换
s.assign("sub"); //将整个原字符串替换为sub
s.assign(str,i,len); //将整个原字符串替换为str从i下标开始的len个字符
s.assign(x,'a'); //将整个原字符串替换为x个字符a(a必须是char类型)//区间修改
s.replace(i,len,"sub"); //将原字符串中从下标i开始的len位替换为sub//单点修改
s[i]='a'; //将原字符串i下标的元素替换为a(a必须是char类型)

插入字符

//在字符串末尾添加内容
s.append("sub"); //将sub添加到原字符串末尾s+=sub; //将sub添加到原字符串末尾
//上述代码等价
s.push_back('a'); //将字符a添加到原字符串末尾(a必须是char类型)//在指定位置插入内容
s.insert(i,"sub"); //将sub插入到原字符串下标为i的位置

删除字符

//删除指定字符
s.erase(i,len); //删除从下标i开始的len位字符//清空字符串
s.clear(); //清空整个字符串//从结尾删除
s.pop_back(); //删除字符串中最后一位字符

指针

const char* c=s.c_str();const char* c=s.data();
//上述代码等价

c_str(),data() 返回值:const char*,获得一个指向原字符串的指针

比较/匹配

//比较两个字符串
int res=s.compare("other"); //比较s和other
if(res==0) printf("Yes");
else printf("No");
//相同输出Yes,不相同输出No//查找第一个匹配任意字符的位置(只要给定字符串中任意一位匹配到了就会返回)
size_t id=s.find_first_of("abc");
//查找第一个出现的字母'a','b','c'中的任意一个字符的位置//查找最后一个匹配任意字符的位置(只要给定字符串中任意一位匹配到了就会返回)
size_t id=s.find_last_of("abc");
//查找最后一个出现的字母'a','b','c'中的任意一个字符的位置//查找第一个不匹配任意字符的位置(只要某个字符串不在给定字符内就会返回)
size_t id=s.find_first_not_of("abc");
//查找第一个不属于'a','b','c'中任意一个字符的位置//查找最后一个不匹配任意字符的位置(只要某个字符串不在给定字符内就会返回)
size_t id=s.find_last_not_of("abc");
//查找最后一个不属于'a','b','c'中任意一个字符的位置

compare() 返回值:int,相同返回0,不相同返回-1

find_first_of(),find_last_of(),find_first_not_of(),find_last_not_of()

返回值:size_t,匹配到对应的会返回下标,没有匹配到会返回npos

反转

//反转整个字符串
reverse(s.begin(),s.end());//反转部分字符
reverse(s.begin()+i,s.begin()+j+1); //反转下标从i到j的部分

转换

//int转string
s=to_string(x); //将int类型的x转为string类型的s//string转int
x=stoi(s); //将string类型的s转为int类型的x//char[]转string (c是char[]类型)
s=c; //将char[]类型的c转为string类型的ss.assign(c); //将char[]类型的c转为string类型的s
//上述方法等效//string转char[] (c是char[]类型)
s.copy(c,len,i); //将string类型的s中从下标i开始的len位转换为char[]类型

copy() 返回值:size_t,返回复制的字符数量

遍历

  1. 使用基于范围的for循环
for(char c:s){cout<<s<<" ";
}

直接遍历了原string的内容

  1. 使用下标访问
for(int i=0;i<s.length();i++){cout<<s[i]<<" ";
}

常用于修改字符,但是它涉及到字符串的拷贝,会有额外开销

  1. 使用迭代器
for(auto i=s.begin();i!=s.end();i++){cout<<*i<<" ";
}

相关新闻

  • 《程序员修炼之道》 阅读笔记二
  • 是时候告别向日葵、Todesk、TeamViewer了,快速搭建自托管服务器RustDesk
  • $\text{Catalan}$ 数 卡特兰数

最新新闻

  • 2026苏州钻石回收实测|国标4C定级,全城无套路靠谱门店变现指南 - 薛定谔的梨花猫
  • C语言宽字符处理:wmemcmp、wmemcpy、wprintf核心函数详解与实战
  • 多模态大语言模型LISA
  • 2026长沙回收百达翡丽手表门店分级指南,一线标杆店铺评级,区分正规与小作坊 - 名奢变现站
  • 如何通过WeChatMsg实现微信聊天记录的本地化解析与数据主权保护?
  • 告别GUI开发噩梦:用Dear ImGui在30分钟内为C++项目添加专业界面

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号