Windows下std::ofstream默认文本模式会将 自动转为 需用std::ios::binary标志以二进制模式打开文件来禁用该转换且flag必须在构造或open时传入。写入文本文件时换行符被自动转成 Windows 风格 在 Windows 系统下用 std::ofstream 以默认方式打开文本文件哪怕你写的是 最终落盘的很可能是 。这不是你代码写错了而是 C 标准库在文本模式下对换行做了透明转换——它把所有 当作“逻辑换行”由底层 I/O 层负责映射成平台原生格式。解决办法只有一个绕过文本模式强制用二进制模式写入。用 std::ios::binary 标志打开文件禁用换行符自动转换确保你写入的内容里只含 不要混用 或 注意二进制模式下std::endl 仍会输出 不带 但它的刷新行为保留如只需换行直接写 更明确std::ofstream 怎么正确启用二进制写入关键不是“怎么加 flag”而是 flag 必须在构造时或 open() 时传入且不能和 std::ios::ate、std::ios::app 等冲突除非你清楚后果。推荐写法立即学习“C免费学习笔记深入” Mokker AI AI产品图添加背景