现代C++特性:结构化绑定
核心要点速览 适用类型:public 成员的结构体 / 类、pair/tuple、固定大小数组 /std::array、自定义适配类型 优势:语法简洁、支持 const / 引用绑定、无需提前声明变量 补充:std::tie对比、生命周期问题、非适用场景、底层依赖 一、语法格式:auto [变量1, 变量2, ...] = 复合类型;支持修饰符:const auto&(只读无拷贝)、auto&(修改原对象)、auto&&(C++20 右值绑定) 示例123456789101112// 1. 结构体/类(public成员)struct Point { int x; int y; };Point p = {1, 2};auto [a, b] = p; // 值拷贝绑定// 2. pair/tuplestd::pair<int, std::string> user = {101, "Alice"};auto [id, n...
文件IO:文件流
核心要点速览 本质区别:文本基于字符编码(含格式 / 编码转换),二进制基于原始字节流(无任何转换); 差异:可读性(文本可读 / 二进制不可读)、效率(二进制 > 文本)、适用场景(文本→日志 / 配置,二进制→图片 / 结构体); 操作:文本用>>/<</getline(),二进制用read()/write()+ios::binary; 补充:本质区别对比、结构体二进制读写禁忌、场景选择依据、跨平台兼容原理。 一、本质区别:从存储到操作的差异文本处理和二进制处理的所有差异,根源在于数据存储形式和读写时是否进行转换 对比维度 文本处理(Text Mode) 二进制处理(Binary Mode) 存储形式 以字符编码(ASCII/UTF-8 等)存储,数据需转换为字符编码(如int 123→字符串 “123”) 以原始二进制存储,直接复刻内存字节布局(如int 123→0x7B 0x00 0x00 0x00) 读写转换 自动处理换行符(Windows:...
文件IO:二进制与文本处理
核心要点速览 区别:文本处理基于字符编码(有格式转换),二进制处理基于原始字节流(无转换)。 差异:文本可人类直接阅读,二进制不可;文本有换行符 / 编码转换,二进制无;文本适合日志 / 配置,二进制适合图片 / 结构体。 操作:文本用>>/<</getline(),二进制用read()/write()+ios::binary。 一、区别 维度 文本处理(Text Mode) 二进制处理(Binary Mode) 存储形式 字符编码(如 ASCII、UTF-8),每个字符对应编码值。 数据原始二进制(如 int 的 4 字节、结构体的连续字节)。 格式转换 自动处理换行符(Windows:\n→\r\n;Linux:不转换),部分编码可能转换(如宽字符)。 无任何转换,字节数据原样读写(\n就是 0x0A,\r就是 0x0D)。 可读性 人类可直接阅读(如记事本打开txt文件)。 人类不可读(打开为乱码,需程序解析)。 效率 读写需编码 / 解码,效率较低。 直...
共白头
共白头 忽有故人心上过,回首山河已入冬。 他朝若是同淋雪,此生也算共白头。 白头若是雪可替,世间何来伤心人。 此时若有君在侧,何须淋雪作白头。

