当前位置: 首页 > news >正文

14. 字符串

1.字符串字面量

2.C 风格字符串(基于字符数组的字符串)

3.C++ 标准库 string 类

4.字符串字面量与 std::string 的转换


1.字符串字面量

字符串字面量是C++中最基础的字符串形式,你可以把它理解为直接用双引号""包裹的字符序列 比如"hello""C++ string"都属于字符串字面量1).核心特性 a.本质 字符串字面量在内存中是以constchar[](常量字符数组)的形式存储的,并且自动在末尾添加\0(空字符)作为结束标志 b.只读属性 字符串字面量存储在程序的只读内存区域,不能修改,强行修改会导致程序崩溃 c.转义字符 支持转义字符(如\n换行、\t制表符、\"表示双引号本身)
2).代码示例#include <iostream>usingnamespacestd;intmain(){// 基础的字符串字面量constchar*str_literal="Hello, C++!";// 推荐用const修饰,明确只读属性cout<<str_literal<<endl;// 输出:Hello, C++!// 转义字符的使用constchar*escape_str="Line1\nLine2\tTab\"Quote\"";cout<<escape_str<<endl;/* 输出: Line1 Line2 Tab"Quote" */// 错误示例:试图修改字符串字面量(会导致程序崩溃)// str_literal[0] = 'h'; // 编译可能警告,运行时崩溃// 字符串字面量可以拼接(多个双引号包裹的序列会自动合并)constchar*concat_str="Hello"" ""World";cout<<concat_str<<endl;// 输出:Hello Worldreturn0;}

2.C 风格字符串(基于字符数组的字符串)

C风格字符串是从C语言继承来的,本质是以\0结尾的char类型数组,但可以修改,因为存储在"可写内存区"1).声明与初始化"必须保证数组末尾有\0, 否则无法被正确识别为字符串"(会出现乱码)
#include <iostream>#include <cstring>// 必须包含该头文件,使用C风格字符串的操作函数usingnamespacestd;intmain(){// 方式1:直接初始化(自动添加'\0')charc_str1[]="Hello";// 数组长度为6(5个字符 + '\0')cout<<"长度:"<<strlen(c_str1)<<endl;// 输出:5(strlen只算有效字符,不含'\0')cout<<"数组大小:"<<sizeof(c_str1)<<endl;// 输出:6(包含'\0')// 方式2:手动初始化(必须显式加'\0')charc_str2[6]={'H','e','l','l','o','\0'};cout<<c_str2<<endl;// 输出:Hello// 错误示例:缺少'\0',输出乱码charc_str3[5]={'H','e','l','l','o'};cout<<c_str3<<endl;// 输出:Hello + 随机乱码(直到找到内存中的'\0')return0;}
2).C风格字符串的常用操作(依赖<cstring>)


3.C++ 标准库 string 类

C++推荐使用的字符串类型,封装了字符数组的底层细节,更安全、易用、支持动态长度,需要包含头文件<string>1).核心优势 a.自动管理内存,无需手动处理\0和数组长度 b.支持运算符重载(+拼接、=赋值、==比较、[]访问字符等)c.提供丰富的成员函数(获取长度、查找、替换、清空等)
2).声明和常用操作#include <iostream>#include <string>// 必须包含该头文件usingnamespacestd;intmain(){// 初始化方式strings1="Hello";// 直接赋值strings2("World");// 构造函数初始化strings3=s1+" "+s2;// 拼接(支持+运算符)cout<<s3<<endl;// 输出:Hello World// 常用成员函数cout<<"字符串长度:"<<s3.size()<<endl;// 输出:11(等价于length())cout<<"第一个字符:"<<s3[0]<<endl;// 输出:H(支持[]访问)cout<<"查找子串:"<<s3.find("World")<<endl;// 输出:6(返回子串起始下标)// 修改字符串s3.replace(0,5,"Hi");// 从下标0开始,替换5个字符为"Hi"cout<<"替换后:"<<s3<<endl;// 输出:Hi World// 清空字符串s3.clear();cout<<"清空后是否为空:"<<s3.empty()<<endl;// 输出:1(true)return0;}

4.字符串字面量与 std::string 的转换

a.字符串字面量转换为std::string,直接赋值即可 b.std::string转换为字符串字面量,c_str()
#include <iostream>#include <string>usingnamespacestd;intmain(){// 1. 字符串字面量 → std::string(直接赋值即可)constchar*c_str="Hello";strings=c_str;cout<<s<<endl;// 输出:Hello// 2. std::string → 字符串字面量(用c_str())strings2="World";constchar*c_str2=s2.c_str();// 必须用const char*接收cout<<c_str2<<endl;// 输出:Worldreturn0;}
http://www.jsqmd.com/news/333156/

相关文章:

  • 2026年 精铸腊厂家推荐排行榜:精铸腊,精密铸造腊,低温/中温/模具/工业/航空发动机精铸腊,专业品质与创新技术深度解析 - 品牌企业推荐师(官方)
  • 网络安全学习路线,入门到入坟,史上最全网络安全学习路线整理
  • 100N06NF-ASEMI“60V功率控制的效率密码”
  • 25. 图集
  • Day27事件对象及常见属性
  • 学霸同款10个降AI率平台 千笔帮你高效降AIGC
  • 基于自适应动态规划(ADHDP)的仿真程序实现
  • 快速讲讲多线程线程池
  • 讲讲蜡烛香精厂商选购要点,价格多少钱合适 - 工业推荐榜
  • 数控加工高精尖硬活,全靠国产数控编程撑底气
  • 研究生收藏!千笔ai写作,最受喜爱的AI论文平台
  • 液冷数据中心建设公司选购指南,参考排名选口碑好的 - mypinpai
  • 2026年浇注料/可塑料/磷酸盐砖生产厂家推荐——高温工业信赖之选 - 深度智识库
  • 深度测评!研究生必备的一键生成工具 —— 千笔写作工具
  • 2026广东公考面试机构实力盘点:师资、教研与上岸率综合TOP榜 - 华Sir1
  • 2026年中国聚丙烯网状纤维厂家首选推荐:维利斯(山东)新材料科技有限公司 - 2026年企业推荐榜
  • [todo]10个常见的后端框架
  • 低成本快速启动!一站式同城跑腿小程序平台源码系统
  • 2026年2月徐州电器设备、电力设备、电气设备、油浸式变压器、干式变压器公司推荐:行业洗牌期,选对伙伴决胜未来 - 2026年企业推荐榜
  • 支付宝红包套装新手避坑指南,90%的人都踩过这些雷 - 团团收购物卡回收
  • 盘点2026年天津地区公考培训选哪家,正则教育口碑出众 - mypinpai
  • 中国大陆下载 Debian 13 安装镜像
  • 跟对老师,面试成公!2026年登科7月广东省考面试名师领航 - 华Sir1
  • 探讨2026年GEO优化的工具推荐 这些值得拥有 - myqiye
  • 2026年欧美国际物流靠谱吗,真实案例来验证 - 工业设备
  • 2026热陶瓷耐磨耐火涂料厂家推荐:郑州荣盛窑炉促进行业创新 - 深度智识库
  • 2026年有实力的香精香料品牌企业费用分析,哪家更划算 - 工业品牌热点
  • 口碑引领2026厌氧絮状污泥:优质企业排行发布,做得好的厌氧絮状污泥生产厂家优选品牌推荐与解析 - 品牌推荐师
  • 2026年江苏落渣管/输煤管/导料槽/除尘器/犁煤器厂家选型指南:技术迭代期的领航者抉择 - 2026年企业推荐榜
  • 赛鸽飞行能力鉴定仪 鸽子dna检测设备