首页 > 解决方案 > 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();
        }

标签: c++loggingostream

解决方案


模式标志std::ios::app指示应将输出附加到文件中。你必须使用std::ios::out

std::ofstream file ("AppLog.txt", std::ios::out);

std::ofstream


或使用新名称创建一个新文件

如果要检查文件是否存在,则可以尝试打开文件进行读取并检查std::ios::good()是否成功:

bool exists( const std::string& fileName )
{
    std::ifstream infile(fileName.c_str())
    return infile.good();
}

根据结果​​,您可以使用新名称创建新文件。


推荐阅读