c++ - C ++ ostream没有创建新文件
问题描述
这是WriteAppLog
我用来创建应用程序生成的日志的代码,但我想覆盖以前的日志或每次都使用新名称创建一个新文件。
有人可以帮我修改吗?
void WriteAppLog (const std::string &s)
{
std::ofstream file ("AppLog.txt", std::ios::app);
file << "[" << Helper::DateTime().GetDateTimeString () << "]" << "\n" << s << std::endl << "\n";
file.close();
}
解决方案
模式标志std::ios::app
指示应将输出附加到文件中。你必须使用std::ios::out
:
std::ofstream file ("AppLog.txt", std::ios::out);
或使用新名称创建一个新文件
如果要检查文件是否存在,则可以尝试打开文件进行读取并检查std::ios::good()
是否成功:
bool exists( const std::string& fileName )
{
std::ifstream infile(fileName.c_str())
return infile.good();
}
根据结果,您可以使用新名称创建新文件。
推荐阅读
- android - 如何在成功和错误时延迟 RxJava 订阅?
- reactjs - React + Typescript:如何输入 event.target.name 来声明?
- c# - 登录.Net核心控制台应用程序不起作用
- css - Chrome DevTools 通过样式面板持续更改
- php - 如何使用方法获得运费
- jasper-reports - Javascript 中的 JasperReports 条件样式
- php - 提交的表单不包含 type='submit' 参数
- firebase - 如何使用 Kotlin 更深层次的属性查询 Firestore 集合?
- php - 如何合并多维数组中的重复键?
- css - 带有延迟的 SVG 动画