【C / C++】带你系统的认识 string
【C / C】带你系统的认识 string从零到精通一次性把 string 搞明白2026 年最新视角涵盖 C 和 C 所有常见用法C 和 C 里string 有三种完全不同的“身份”很多人混着用才踩坑。我们按难度和使用场景来系统拆解1. C 语言里的“string” —— 其实就是 char 数组 ‘\0’C 语言没有内置 string 类型所有字符串都是以\0 结尾的 char 数组。写法示例含义常见坑点char s[10] “hello”;自动加 ‘\0’占用 6 字节别忘了留位置给 ‘\0’char s[] “hello”;自动推导大小6 字节最安全写法char *p “hello”;字符串常量存放在只读区不可修改p[0] ‘H’; → 段错误char buf[100]; scanf(“%s”, buf);读取输入到 buf超长输入 → 缓冲区溢出经典安全漏洞C 语言常用字符串函数都在 string.h 里函数作用返回值安全注意strlen(s)求长度不含 ‘\0’size_t-strcpy(dest, src)复制包括 ‘\0’dest容易溢出慎用strncpy(dest, src, n)复制最多 n 个字符dest可能不加 ‘\0’要手动补strcat(dest, src)追加dest容易溢出strcmp(s1, s2)比较字典序0 / 正 / 负-strstr(hay, needle)查找子串找到位置 / NULL-C 语言安全写法推荐现代 Ccharbuf[100];fgets(buf,sizeof(buf),stdin);// 安全读一行buf[strcspn(buf,\n)]\0;// 去掉换行符2. C 里的 std::string —— 真正现代字符串推荐 99% 场景C 引入了string头文件里的std::string它才是我们平时说的“string”。核心特点自动管理内存无需手动 new/delete动态长度可以随意 append、resize支持 、、[] 等运算符线程安全C11 后标准保证性能极高小字符串优化 SSO常用操作速查表操作方式代码示例说明声明string s “hello”;string s(10, ‘a’);10 个 ‘a’拼接s world;s s “!” ;支持 和 取长度s.length() / s.size()两者等价访问字符s[0], s.at(0)at() 会抛异常[] 不抛追加s.append(“abc”);s.push_back(‘d’);插入s.insert(5, “XXX”);在下标 5 插入替换s.replace(2, 3, “new”);从 2 开始替换 3 个字符查找s.find(“world”);s.rfind(“o”);返回位置找不到返回 string::npos截取子串s.substr(0, 5);前 5 个字符清空s.clear();s “”;判空s.empty()比较s “hello”s “abc”支持所有比较运算符小技巧合集面试/实战必备string shello, world!;s.erase(5,2);// 删除 , → helloworld!s.erase(s.find(world));// 删除 world 及之后所有格式化字符串C20 及以上最优雅#includeformatstring msgstd::format(Hello {}, your score is {},name,score);C17 结构化绑定 string_view性能神器string_view svhello;// 只读视图不拷贝3. C 和 C 混用时的“转换坑”最容易踩雷场景正确写法错误写法会导致崩溃/未定义行为const char* → stringstring s cstr;string s (char*)cstr;string → const char*const char* p s.c_str();const char* p s.data(); C17 前危险string → char 数组strcpy(buf, s.c_str());strcpy(buf, s.data());从 scanf 读到 stringstring s; scanf(“%s”, s[0]); // C11 后可行scanf(“%s”, s); // 错printf 打印 stringprintf(“%s”, s.c_str());printf(“%s”, s); // 错最佳实践2026 年写 C 项目能用std::string就别用 char 数组需要和 C 接口交互时用s.c_str()传出去需要可修改的 char 缓冲区用s.data()C17 后保证可写永远不要忘记string内部可能有小字符串优化SSOdata()不一定指向堆内存4. 面试/大厂常考 string 题目带解析实现strcpy、strcat、strcmp字符串反转in-place去掉字符串中所有空格判断回文串忽略大小写和非字母实现atoi字符串转整数实现 KMP 算法找子串用 string 实现大整数加法总结一句话口诀C 里 string char[] ‘\0’C 里 string std::string自动管理、动态、安全、高效你现在用 string 最多遇到哪类问题是拼接性能、内存泄漏、C/C 混用转换、还是面试算法题把具体场景告诉我我可以给你更针对性的代码模板和避坑指南

相关新闻

考虑多智能体在B端落地前企业自身需考虑管理文化的“AI化”

考虑多智能体在B端落地前企业自身需考虑管理文化的“AI化”

前言 过去两年,大模型的爆发让很多团队对“智能体”抱有极高期待。尤其在B端场景,不少企业希望引入一个“万能助手”,一句话就能完成从查数据、写报告到走流程的全套操作。这种设想在演示阶段确实令人振奋——输入一句模糊需求,系…

2026/7/3 1:54:49 阅读更多 →
真的太省时间了!AI论文软件 千笔AI VS PaperRed,自考写作神器!

真的太省时间了!AI论文软件 千笔AI VS PaperRed,自考写作神器!

随着人工智能技术的迅猛发展,AI辅助写作工具已经成为高校学生完成毕业论文的重要助手。越来越多的学生开始借助这些工具提升写作效率、降低写作难度,尤其是在自考群体中,AI工具的应用已逐渐成为常态。然而,面对市场上种类繁多、功…

2026/5/17 1:42:55 阅读更多 →
四大厂商云服务器安全创新对比,筑牢数字化转型安全底座

四大厂商云服务器安全创新对比,筑牢数字化转型安全底座

数字化转型过程中,数据安全与合规成为企业上云的核心考量,金融、政务、医疗等行业对云服务器的安全防护能力提出极致要求。腾讯云、阿里云、百度智能云、火山引擎四大厂商围绕硬件安全、数据加密、合规适配等核心维度持续创新,构建差异化安全…

2026/5/17 1:42:55 阅读更多 →

最新新闻

直流电机静音控制方案:H桥驱动与PID算法实践

直流电机静音控制方案:H桥驱动与PID算法实践

1. 项目背景与核心器件选型在工业自动化和消费电子领域,直流电机控制一直是个经典课题。传统PWM调速方案虽然成本低廉,但开关噪声问题始终困扰着对声学敏感的应用场景。这次我们选用东芝的TB9051FTG驱动芯片搭配Microchip的PIC18F46K20 MCU,构…

2026/7/3 1:54:19 阅读更多 →
Home Assistant Operating System终极方案:如何构建专业级智能家居操作系统?

Home Assistant Operating System终极方案:如何构建专业级智能家居操作系统?

Home Assistant Operating System终极方案:如何构建专业级智能家居操作系统? 【免费下载链接】operating-system :beginner: Home Assistant Operating System 项目地址: https://gitcode.com/gh_mirrors/op/operating-system Home Assistant Ope…

2026/7/3 1:54:19 阅读更多 →
股票研究信息处理:AI工具在资讯、财报与复盘环节的辅助作用

股票研究信息处理:AI工具在资讯、财报与复盘环节的辅助作用

普通投资者做股票研究时,最容易陷入信息过载与流程混乱:每天要刷大量资讯、读研报、翻财报,还要做盯盘记录与复盘总结,零散的信息很难沉淀成体系,反复查找资料又浪费大量时间。我实际用下来,AI工具的核心价…

2026/7/3 1:52:19 阅读更多 →
Tokio 背压:异步不是无限接请求的许可证

Tokio 背压:异步不是无限接请求的许可证

Tokio 背压:异步不是无限接请求的许可证 Tokio 让 Rust 服务能优雅处理大量连接,但异步不是无限接请求的许可证。没有背压的异步系统,会把压力藏进 channel、任务队列、buffer 和下游连接池里。表面上线程没阻塞,实际内存和尾延迟…

2026/7/3 1:52:19 阅读更多 →
Prometheus 记录规则:查询快了,语义也要清楚

Prometheus 记录规则:查询快了,语义也要清楚

Prometheus 记录规则:查询快了,语义也要清楚 一、记录规则不是为了偷懒写短查询 Prometheus 查询复杂时,很多团队会用 recording rules 把中间结果预计算出来。这样能减少查询压力,也能让告警表达更清晰。但记录规则不是为了偷懒把…

2026/7/3 1:52:19 阅读更多 →
DMA 调试:缓存一致性问题,比传输失败更阴

DMA 调试:缓存一致性问题,比传输失败更阴

DMA 调试:缓存一致性问题,比传输失败更阴 一、深度引言:DMA 能解放 CPU,也能把调试逼疯 DMA(Direct Memory Access)是现代嵌入式系统中不可或缺的硬件机制。它让外设直接与内存交换数据,CPU 不需…

2026/7/3 1:48:18 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻