【C++】以追加方式将数据写入 与当前系统时间戳相关联的日志文件中
2023-12-22 09:34:32
案例:
生成一个带有时间戳的日志文件,文件名为"maData",保存在"./log/"目录下。日志文件包含两列:整数值(变量a)和相应的双精度值(变量b)。程序在一个循环中运行,向文件写入100行数据。
1.时间和日期处理:
- 使用 和 头文件处理时间和日期。
- 获取当前时间戳(秒级),并使用 localtime 函数将其转换为本地时间结构体。
- 使用 strftime 函数将时间结构体格式化为字符串,格式为"%Y%m%d_%H%M%S"。
- 构建新的文件名,形如"./log/maDataYYYYMMDD_HHMMSS.txt"。
2.文件名字符串处理:
- 使用 ostringstream 将文件名字符串添加到输出流中。
- 将输出流中的字符串存储到 filename 变量中。
3.文件操作:
- 打开文件,采用追加方式打开,即如果文件存在则在文件末尾追加内容,如果文件不存在则创建文件。
- 在循环中,将整数 a 和浮点数 b 写入文件,每行以制表符分隔。
- 刷新文件缓冲区以确保数据被立即写入文件。
- 关闭文件。
代码实现如下:
#include <iostream>
#include <sstream>
#include <fstream>
#include <ctime>
#include <iomanip>
int main()
{
int a = 0;
double b = 0;
int i = 0;
// 获取当前日期和时间
std::time_t now = std::time(nullptr);
struct std::tm *current_time = std::localtime(&now);
// 构建日期时间字符串
char buffer[80];
std::strftime(buffer, sizeof(buffer), "%Y%m%d_%H%M%S", current_time);
// 构建新的文件名
std::string new_filename = "./log/maData" + std::string(buffer) + ".txt";
std::ostringstream oss;
oss << new_filename;
std::string filename = oss.str();
// 打开文件
// 以追加方式打开文件
std::ofstream writeFile(filename, std::ios::app);
while (i < 100)
{
// 你的数据
a = i;
b = i * 0.2;
// 将a和b写入文件,以制表符分隔,每行末尾加换行符
writeFile << a << "\t";
writeFile << std::fixed << std::setprecision(4) << b << std::defaultfloat << "\t";
writeFile << "\n";
// 刷新文件缓冲区,确保数据立即写入文件
writeFile.flush();
i++;
}
// 关闭文件
writeFile.close();
return 0;
}
文章来源:https://blog.csdn.net/qq_54199287/article/details/135137176
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!