ios::app在文件末尾追加内容,保留原数据,适合日志记录;ios::trunc打开时清空文件,适合重写场景。默认ios::out等同于ios::trunc。

在C++中操作文件时,ios::app 和 ios::trunc 是两种不同的文件打开模式,它们控制着文件写入时的行为。虽然都常用于输出流(ofstream),但作用完全不同。
ios::app:追加模式
使用 ios::app 时,所有写入操作都会被自动定位到文件末尾,新内容会追加在原有内容之后,不会覆盖已有数据。
特点:
- 每次写入前,文件指针自动移到末尾
- 原有内容保留
- 适合记录日志、持续添加数据等场景
ios::trunc:清空模式
使用 ios::trunc 时,一旦文件被打开,其原有内容就会被立即清空,长度变为0。后续写入将从头开始。
立即学习“C++免费学习笔记(深入)”;
特点:
- 打开文件即删除原内容
- 适合需要重写整个文件的场景
- 若文件不存在,则创建新文件
常见组合用法
这两个标志可以和其他模式组合使用,例如:
- ios::out | ios::app:以追加方式打开输出文件
- ios::out | ios::trunc:以清空方式打开输出文件(默认行为)
注意:当只使用 ios::out 打开文件时,默认行为是 ios::trunc,即自动清空原内容。
基本上就这些。选择哪个模式取决于你是否想保留原文件内容。










