本章导读
卷四回答"程序怎么处理非代码的任意数据"。它分两段:前半(第 25~29 章)是文本与字节的基础设施——字符串的视图与构建器、数字的严格解析与格式化、字符集与 Unicode、编解码三件套、压缩;后半(第 31 章起)是结构化数据——动态值、JSON、XLON、逐行格式(JSONL/XLONL)、模板与正则。前半是后半的地基:解析器用字符串族切词、用数值族转数、用字符集族处理多语言、用资源边界防炸弹——每一章都会在后半被点名回收。
一条主线:边界的严格性
比"会用了什么函数"更重要的是卷四反复出现的同一条主线:边界的严格性。数字解析要么全对要么失败(第 26 章)、转码默认 STRICT(第 27 章)、解码不留半截结果(第 28 章)、解压设上限(第 29 章)——四个模块、同一个哲学:模糊的宽容在边界上是隐患,显式的失败才是契约。这不是偶然的风格统一:文本与字节是程序与外部世界的接触面,攻击(注入、炸弹、编码陷阱)与事故(截断、漂移、错位)都从边界进来。读完卷四前半,你写出的每个"吃外部数据"的函数都应该自然带上这套严格性——那是本卷最想留下的肌肉记忆。
前半五章的一条快捷记忆
如果只能带走一句话,带走这条:"视图不分配、严格不过夜、边界不宽容、膨胀先算账、解压设上限"——五章各占一个短语。第 25 章的视图让文本操作免于复制;第 26 章的严格让杂质当天暴露;第 27/28 章的边界纪律让编码陷阱与半截结果进不来;第 28 章的容量公式让膨胀可预算;第 29 章的上限让炸弹炸不动。五个短语覆盖了前半卷的全部坑位——面试、评审、写代码时都可以直接引用。
三级跳:字节 → 文本 → 结构
卷四的知识栈可以概括为三级跳。第一级:字节与文本的互转——视图(第 3 章)是货币、字符串族(第 25 章)是操作、编码(第 27/28 章)是边界翻译。第二级:文本与数值的互转——解析与格式化(第 26 章),严格性在这里定型。第三级:文本与结构的互转——后半卷的 JSON/XLON 把字符流变成值树,模板把值树变回文本。每一级都建立在前一级的地基上,跳级使用(比如直接上手 JSON 而不懂视图与严格解析)会在调试时付出理解成本。
阅读建议与检验
按序通读是本卷的最佳路径——三级跳的顺序就是章节顺序,跳过任何一级都会在后半卷的调试里补票。已熟悉 C 文本处理的读者可以快进第 25 章,但在第 26/27 章的严格性哲学处停下细读(它与多数人带过来的标准库习惯相反)。离开本卷前自测五问:视图与拥有式字符串什么时候各用哪个?严格解析为什么比 atoi 的宽容更安全?三种计量(字节/单元/标量)在什么场景必须区分?Base64 与 Percent 各自的通道是什么?解压为什么必须设上限?五问顺畅,卷四前半过关,后半的结构化数据在前方等你——那时你会发现 JSON 解析器的每一层都写着本卷的函数名。
本卷知识地图
一张膨胀与成本的直觉表
前半五章的"账本直觉"可以合并成一张小表:视图操作零分配(第 25 章)、严格解析零意外(第 26 章)、转码输出大小可笔算(第 27 章)、编码膨胀有公式(第 28 章:33%/100%/≈0%)、压缩有固定开销(第 29 章:约 18 字节容器)——每一章都把"成本"从猜测变成算术。合起来读:卷四前半是一套把文本处理的隐式成本全部显式化的工具箱,你永远知道每一步付出什么、为什么付出。
三类读者三种走法
应用开发者(主要写业务):精读第 25/26 章——字符串与数值是每天要用的;27/28/29 章理解哲学即可,函数用时查速查表。协议与基础设施开发者:全部精读——你写的每一层都在本卷的函数上运行,严格性与性能观直接影响你设计的接口形状。从动态语言迁移来的读者:先调整两个预期——C 的字符串不是对象而是视图+约定(第 3 章),"数字转字符串"没有隐式魔法只有显式的解析与格式化(第 26 章);调整之后本卷的 API 会显得格外规整——因为它们把动态语言运行时里隐式做的事全部显式化了。
性能观:本卷不追求微优化
卷四的函数大多运行在数据边界(解析入口、协议出口、展示层),它们的性能特性遵循一个规律:边界操作的次数远小于数据操作的次数——配置解析一次、请求头解析每请求一次,而其触发的业务处理可能执行百万次。因此本卷的优化重点是"不做不必要的分配"(视图管线、构建器)而非微优化每个函数;真正的高频文本处理(协议流)会在卷七看到流式形态的专门设计。把优化精力投在正确的层——这是卷四与卷三(容器才是热路径常客)在性能观上的分工。
与前后卷的衔接
向前衔接:卷一的错误模型(第 4 章)承载本卷全部失败路径——本卷每个"整体失败"的背后都是错误槽在记录类别与位置;内存体系(第 5/7 章)承载字符串与缓冲的归属——拥有式产物与视图借用的分工是卷一所有权语言在文本层的落地;资源边界(第 3 章)在本卷两次上岗(解压上限、解析边界)。向后衔接:第 30 章的动态值用本卷数值与编码打底——浮点的最短往返直接成为 JSON 序列化的默认输出策略;卷九 HTTP 的头解析、内容编码、URL 处理是本卷全家桶的协议级汇演,届时回头翻本卷速查表的频率会出乎你的意料。文本是数据世界的通用语——本卷学的不是"几个字符串函数",是这门通用语的语法与它的安全守则,语法让数据流动,守则让流动不出事。
📖 本章涉及的 API 参考手册:string(92 个条目)codec(26 个条目)
点击查看完整签名、参数约束、返回值与错误说明