【C++字符串】char*、const char*、char[]和std::string
专栏网址https://blog.csdn.net/zhujushu/category_13112687.html0.概述在程序开发中字符串操作是必不可少的功能之一。在众多编程语言中C对字符串有着底层、较良好的支持。C 提供了以下两种字符串表示形式C语言风格 const char*、char[]、char* 等类型C std::string 类类型。本文将介绍以上字符串类型使用的方式并重点讲述std::string的功能。1.const char*const char* 是一个不可变的字符串常量类型看以下代码const char* Str Hello World!;里面 Str、Hello World! 都是const char*类型的它可以是左值也可以是右值。注意区分const char* 和 char* constchar * const CConst; //指向字符的静态指针 const char * ConstC; //指向静态字符的指针当const char*的值是一个右值时C编译器会在const char*的末尾添加\0。2.char[]char[]代表字符数组可以对应一个字符串如char b[]string2; //b的长度是字符的数量1 //因为gcc/g编译器会在const char*的末尾添加\0这里b是一个char数组字符数组,每个元素对应一个字符最后的元素为\0。区别如下注意char型数组的名字也是该数组首元素的地址是常量不能改变。但char型数组的每个元素可以改变。char b[]Hello World;//定义 printf(%s\n,b);//输出结果Hello World3.char*char* 是指向字符串的指针与const char*不同的是char*的值可以改变。看以下代码char* Str Hello World!;//定义 StrHi!; printf(%s\n,Str);输出Hi!里面 Str是char*类型的。注意区分char[] 和 char* :char * C Hello!; C Hi!;//合法 C[0] A;//非法访问只读内存非法 char CC[] Hello!; CC Hi!;//报错首元素地址无法改变 CC[0] A;//合法在ISO C中char* 被指明是危险的它可能导致内存泄漏、溢出等风险在开发中要慎用。4.std::stringstd::string是 C 标准库中提供的字符串类用于处理动态大小的字符序列。它属于std命名空间封装了字符串的存储和管理提供了丰富的成员函数和操作符简化了字符串操作。头文件使用std::string要引入string.h头文件代码如下#include string.h //using namespace std; //使用引入的标准库的全部内容使用时无需std::前缀但容易造成重声明和污染 //using std::string; //同using namespace std;但只使用string类类型推荐基本用法声明和初始化std::string可以通过多种方式完成std::string str1; // 默认初始化空字符串 std::string str2(Hello); // 从 C 风格字符串初始化 std::string str3(str2); // 从另一个 std::string 初始化 std::string str4(5, a); // 重复字符初始化结果为 aaaaa常用成员函数std::string提供了大量成员函数以下是一些常用功能访问字符char c str2[0]; // 通过下标访问不检查边界 char c2 str2.at(1); // 通过 at() 访问会检查边界修改字符串str1.append( World); // 追加字符串 str1.push_back(!); // 追加单个字符 str1.insert(5, C); // 在指定位置插入 str1.erase(5, 4); // 删除子串容量操作size_t len str1.size(); // 获取字符串长度 bool empty str1.empty(); // 判断是否为空 str1.resize(10); // 调整字符串大小字符串操作查找和替换size_t pos str1.find(World); // 查找子串 if (pos ! std::string::npos) { str1.replace(pos, 5, Universe); // 替换子串 }子串提取std::string sub str1.substr(6, 5); // 提取从位置 6 开始的 5 个字符输入输出std::string可以与标准输入输出流配合使用std::string input; std::cin input; // 读取一个单词 std::getline(std::cin, input); // 读取一行 std::cout input std::endl; // 输出字符串与 C 库函数互通与 C 库函数交互时由于使用的是const char* 或 char[]会造成类型不匹配。std::string 提供了c_str()以获取const char*指针const char* cstr str1.c_str();性能与注意事项std::string动态管理内存自动处理存储空间的分配和释放。频繁的字符串拼接可能导致多次内存重新分配影响性能。可以使用reserve()预分配空间优化。现代 C 扩展C17 引入了std::string_view提供对字符串的非拥有视图适合只读场景避免不必要的拷贝std::string_view view(str1.data(), 5); // 创建前 5 个字符的视图5.总结C提供了多种字符串处理方式包括C风格字符串const char*、char[]、char*和更现代的std::string类。C风格字符串需要手动管理内存且易出错而std::string通过自动内存管理简化了操作并提供丰富的成员函数支持查找、替换、子串提取等常见需求。std::string与标准输入输出流无缝集成同时支持通过c_str()与C风格字符串交互。C17引入的std::string_view进一步优化了只读场景的性能。开发中应优先使用std::string以提升安全性和可维护性仅在必要场景下谨慎使用C风格字符串。温馨提示请留下点赞

相关新闻

武汉老板注意:光谷企业做展厅,别再拿“科技感“说事了

武汉老板注意:光谷企业做展厅,别再拿“科技感“说事了

‍武汉光谷,"中国光谷"这块招牌挂了快 40 年。2025 年的光谷,聚集了 1.6 万家高新技术企业、6 家国家实验室、3 个国家大科学装置。这些企业几乎家家都想做展厅,但 80% 的光谷展厅,第一句话是"科技感"。科技感…

2026/7/23 19:53:20 阅读更多 →
地信本科,应该学什么编程语言?什么阶段学?

地信本科,应该学什么编程语言?什么阶段学?

首先,一般地信本科的课程设置里就包含C、C这几种底层开发语言,但是通常不教C# ,因为C#是专门的GIS桌面开发课程,比如使用ArcEngine进行桌面端的开发。主流的GIS开发编程更倾向WebGIS或Python。C语言C语言是计算机的底层语言&#…

2026/7/23 19:53:20 阅读更多 →
惠普锐 Pro 16 全能轻薄本科普

惠普锐 Pro 16 全能轻薄本科普

惠普锐 Pro 16 是面向学生、职场创作者的 16 英寸大屏全能本,搭载标压锐龙 7 H255,标配 24GB 大内存 1TB 固态,叠加国家补贴与平台优惠后到手仅 5403.5 元,兼顾性能、大屏与高性价比,下面分四大维度解析。 一、锐龙标…

2026/7/23 19:53:20 阅读更多 →

最新新闻

Python在自然科学中的AI应用:高维数据处理与可解释性分析

Python在自然科学中的AI应用:高维数据处理与可解释性分析

1. 项目概述:当Python遇上自然科学中的AI在实验室泡了十年,我深刻体会到自然科学研究者面对高维数据时的痛苦——那些基因序列、气象观测、天体物理信号,动辄成千上万个维度,Excel连打开都费劲。直到五年前我开始系统地将机器学习…

2026/7/23 20:01:23 阅读更多 →
OpenAI 昨天卖「可信 Agent」,今天承认模型越狱——Presence 的信任赤字有多大?

OpenAI 昨天卖「可信 Agent」,今天承认模型越狱——Presence 的信任赤字有多大?

一个注定被放在一起读的故事7月22日,OpenAI 正式发布了 Presence。一个面向企业的 AI Agent 编排和管理平台,官方描述是「帮助企业在受控环境中部署可信的 AI Agent,能回答问题、解决问题、使用公司系统、采取经授权的行动,必要时…

2026/7/23 20:01:23 阅读更多 →
主板后边为什么经常有两个以太网口?第二个网口的4种用法你绝对不知道

主板后边为什么经常有两个以太网口?第二个网口的4种用法你绝对不知道

主板后边为什么经常有两个以太网口(就是我们常说的网口),一个不够用吗?还能插USB转网卡啊!哈哈,我当初装机的时候也这么想过,结果后来发现,这个“多余”的第二个网口简直是宝藏!它不光是给服务器用的,普通人玩起来也能解锁一大波高级功能。 看,这就是典型的主板后置…

2026/7/23 20:01:23 阅读更多 →
【CTF-WEB-代码审计】URL编码绕过路经检查访问flag页面,admin编码为%61%64min

【CTF-WEB-代码审计】URL编码绕过路经检查访问flag页面,admin编码为%61%64min

题目 BITSCTF 2026\题目\WEB\rusty-proxy rusty-proxy I just vibecoded a highly secure reverse proxy using rust, I hope it works properly. http://chals.bitskrieg.in:25001解题思路 访问网站 http://chals.bitskrieg.in:25001http://chals.bitskrieg.in:25001/api/stat…

2026/7/23 20:01:23 阅读更多 →
TI HTU模块安全机制与双缓冲配置实战解析

TI HTU模块安全机制与双缓冲配置实战解析

1. HTU模块核心功能与设计哲学解析在嵌入式系统,尤其是汽车电子和工业控制这类对实时性与可靠性要求严苛的领域,微控制器(MCU)内部的数据搬运效率与安全性直接决定了整个系统的成败。德州仪器(TI)的高端定时…

2026/7/23 20:01:23 阅读更多 →
HWAG与N2HET:嵌入式高精度角度测量与定时控制实战解析

HWAG与N2HET:嵌入式高精度角度测量与定时控制实战解析

1. 项目概述与核心价值在发动机管理、工业电机控制这类对实时性和精度要求极高的领域,如何精确、可靠地获取旋转轴的角度位置,是决定整个系统性能的基石。想象一下,一台高速运转的发动机,其曲轴每旋转一度,活塞的位置、…

2026/7/23 20:00:23 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻