在使用Visual Studio编写程序时,通常会采用记录日志的方式来记录和监测某些变量,以此来进行调试和寻找问题。最常用的,就是将数据写入到txt中,这样即便将编译后的文件替换到没有开发环境或者office全家桶的电脑中,也可也直接的通过查看txt中记录的数据。
//首先引用需要的头文件
#include <cstdio>
#include <fstream>
正常首次创建txt时,直接创建即可,但我一般习惯于先判断一下是否存在,如果不存在则创建(看个人习惯,也可直接创建)
if (std::FILE* file = std::fopen("C:\\Users\\UserName\\Desktop\\Log.txt", "r")) {
std::fclose(file);
} else {
// 文件不存在,创建文件
std::ofstream createFile("C:\\Users\\UserName\\Desktop\\Log.txt");
createFile.close();
}
std::ofstream outputFile("C:\\Users\\UserName\\Desktop\\Log.txt", std::ios_base::app);
在上述代码中,需要注意地址的双引号方向,否则会导致地址识别失败,在这里我是使用的绝对地址,即直接将其创建到我写入的地方,C:\Users\UserName\Desktop是路径,Log.txt是名字,注意后缀不要写错。
outputFile 是一个 std::ofstream 对象,表示程序中的输出文件流,用于向指定的文件写入数据。
对于写入方法常用的有两种,一种是覆盖书写,即每次写入新数据时,会将先前的数据进行情况然后写入新的数据,另一种是追加模式,即每次都会在保留原始数据的基础上,将新写入的内容写入到生成的txt的最下面。
这两种写入方法,都只需要在创建输出文件流时,使用参数设定即可。
//默认创建时,会是覆盖模式也叫截断模式
std::ofstream file("example.txt");//默认最简单的写法,不添加参数即默认覆盖
std::ofstream file("example.txt", std::ios_base::out | std::ios_base::trunc);
//与上述等价,截断模式会在打开文件时清空其内容。这意味着文件内容会被完全清除,然后可以从头开始写入新内容。如果文件不存在,则创建新文件。
//截断模式实际上是标准写入模式(std::ios_base::out)的默认行为,但可以显式指定。
//追加模式打开时可使用下述
std::ofstream file("example.txt", std::ios_base::app);
//如果使用追加模式,新写入的数据会添加到文件的末尾,而不会覆盖已有的内容。如果文件不存在,将创建一个新文件。
追加模式 (std::ios_base::app):
在文件末尾添加新内容。
不会删除文件中已有的任何内容。
适用于需要记录日志或连续追加数据的情况。
截断模式 (std::ios_base::trunc):
清空文件内容后再写入新数据。
所有旧内容都会被删除。
适用于每次都希望写入新的完整内容而不保留旧数据的情况。
对于向里面写入数据,则与打印输出一致,使用<<符号
file << "Hello World\n";
file << "Hello World"<<std::endl;;
//上述两种方法均可以写入一个数据,并同事进行换行,也可在字符串中加入空格等符号,以满足自己的需求
最后,在完成数据写入后通过close来关闭文本文件
file.close();