console输出并写入

搞了好久搞出来的代码

//用两种代码 define保留 只显示时间 不显示年月 【成功】
#include <iostream>
#include <fstream>
#include <chrono>
#include <ctime>
#include <cstdarg>#define LOG_TO_CONSOLE_AND_FILE_WITH_DATE
//#define LOG_TO_CONSOLE_AND_FILE#ifdef LOG_TO_CONSOLE_AND_FILE_WITH_DATE
#define LOG(format, ...) LogToConsoleAndFile("log.txt", true, format, __VA_ARGS__)
#elif defined(LOG_TO_CONSOLE_AND_FILE)
#define LOG(format, ...) LogToConsoleAndFile("log.txt", false, format, __VA_ARGS__)
#else
#define LOG(format, ...) LogToConsole(format, __VA_ARGS__)
#endifvoid LogToConsole(const char* format, ...)
{va_list args;va_start(args, format);vprintf(format, args);va_end(args);
}void LogToConsoleAndFile(const std::string& filename, bool includeDate, const char* format, ...)
{// 打开文件以追加写入日志std::ofstream file(filename, std::ios::app);if (!file.is_open()){std::cerr << "无法打开日志文件:" << filename << std::endl;return;}// 获取时间戳auto now = std::chrono::system_clock::now();std::time_t currentTime = std::chrono::system_clock::to_time_t(now);std::tm timeInfo;
#ifdef _WIN32localtime_s(&timeInfo, &currentTime);
#elselocaltime_r(&currentTime, &timeInfo);
#endifchar timeBuffer[128];if (includeDate){std::strftime(timeBuffer, sizeof(timeBuffer), "%Y-%m-%d %T", &timeInfo);}else{std::strftime(timeBuffer, sizeof(timeBuffer), "%T", &timeInfo);}// 格式化日志消息va_list args;va_start(args, format);char buffer[256];vsnprintf(buffer, sizeof(buffer), format, args);va_end(args);// 在控制台和文件中输出日志消息std::printf("%s %s\n", timeBuffer, buffer);file << timeBuffer << " " << buffer << std::endl;
}int main()
{int line = 23;int index = 1; // 请根据您的实际情况设置 index 的值int x{435}, y{334};LOG("---%d行------窗口:%d-----------坐标:%d,%d--------", line, index,x,y);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/170783.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

虚拟机可ping树莓派树莓派无法ping虚拟机 的解决办法

问题描述 在学习交叉编译的过程中&#xff0c;发现了树莓派无法ping通虚拟机的问题。所以我尝试了各种ping&#xff0c;发现&#xff1a; 虚拟机可以ping通树莓派和主机树莓派可以ping通主机主机可以ping通树莓派和虚拟机唯独树莓派没法ping通虚拟机 尝试各种方法后找到一种…

Qt手写ListView

创建视图&#xff1a; QHBoxLayout* pHLay new QHBoxLayout(this);m_pLeftTree new QTreeView(this);m_pLeftTree->setEditTriggers(QAbstractItemView::NoEditTriggers); //设置不可编辑m_pLeftTree->setFixedWidth(300);创建模型和模型项&#xff1a; m_pLeftTree…

车载通信架构 —— 传统车内通信网络FlexRay(较高速度高容错、较灵活拓扑结构)

车载通信架构 —— 传统车内通信网络FlexRay(较高速度高容错、较灵活拓扑结构) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,…

如何在3dMax中根据AutoCAD地形规划文件对地形进行建模?

在3dMax中根据Autocad地形规划文件对地形进行建模的方法 直入主题&#xff0c;要根据包含地形图的DWG (Autocad) 文件进行地形建模&#xff0c;方法步骤如下&#xff1a; 1.运行3dmax软件&#xff0c;点击“文件&#xff08;File&#xff09;->导入&#xff08;Import&…

浅用tensorflow天气预测

1&#xff0e;开发环境 &#xff08;1&#xff09;Python3.8 &#xff08;2&#xff09;Anaconda3 &#xff08;3&#xff09;Tensorflow &#xff08;4&#xff09;Numpy &#xff08;5&#xff09;Pandas &#xff08;6&#xff09;Sklearn 先依次安装好上面的软件和包…

嵌入式软件开发学习途径推荐

1、概述 嵌入式系统是当今智能化的重要组成部分&#xff0c;广泛应用于各行业和领域。学习内容多而杂&#xff0c;不同行业学习的内容也有一定差异。学习完一些基础课程后&#xff0c;工作中便是用到或根据就业方向去拓展自己的知识。这里推荐如下途径(后续可能会补充)&#xf…

document load 和 document ready 的区别

"document load" 和 "document ready" 都是 JavaScript 中用于处理文档加载事件的术语&#xff0c;但是它们之间有一些重要的区别。 document load 在传统的 JavaScript 中&#xff0c;document.load 事件是当整个 HTML 文档完全加载并出现在浏览器中时触…

用友NC word.docx接口存在任意文件读取漏洞 附POC

@[toc] 用友NC word.docx接口存在任意文件读取漏洞 附POC 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使…

C++标准模板(STL)- 类型支持 (类型修改,移除给定类型的一层指针,std::remove_pointer)

类型特性 类型特性定义一个编译时基于模板的结构&#xff0c;以查询或修改类型的属性。 试图特化定义于 <type_traits> 头文件的模板导致未定义行为&#xff0c;除了 std::common_type 可依照其所描述特化。 定义于<type_traits>头文件的模板可以用不完整类型实例化…

Android YUV存储方式

排名 性能&#xff1a;YUV444 > YUV422 > YUV420 > YUV411 YUV444&#xff1a;YUV444 提供最高质量的色彩准确性和图像细节&#xff0c;但需要更多的存储空间和传输带宽。适用于对图像质量要求很高的应用&#xff0c;如专业视频编辑或高端图像处理。YUV422&#xff1…

阻塞队列介绍(一)

1 基础概念 1.1 生产者消费者概念 生产者消费者是设计模式的一种。让生产者和消费者基于一个容器来解决强耦合问题。 生产者 消费者彼此之间不会直接通讯的&#xff0c;而是通过一个容器&#xff08;队列&#xff09;进行通讯。 所以生产者生产完数据后扔到容器中&#xff0c…

Qt QSpinBox与QDoubleSpinBox总结

QSpinBox 与 QDoubleSpinBox QSpinBox 和 QDoubleSpinBox是常用的数值输入和输出组件&#xff0c;我们将它们统称为 SpinBox。 从SpinBox读取的数据就是数值&#xff08;整数或浮点数&#xff09;&#xff0c;设置数值就可以直接显。QSpinBox 用于输入和输出整数&#xff0c;一…

使用Python的turtle库绘制随机生成的雪花

1.1引言 在这篇文章中&#xff0c;我们将使用Python的turtle库来绘制一个具有分支结构的雪花。该程序使用循环和随机颜色选择来绘制20个不同大小和颜色的雪花。turtle库是一个流行的绘图库&#xff0c;常用于创建图形用户界面和简单的动画。这个代码实现了一个有趣的应用&…

Elasticsearch:ES|QL 查询中的元数据字段及多值字段

在今天的文章里&#xff0c;我来介绍一下 ES|QL 里的元数据字段以及多值字段。我们可以利用这些元数据字段以及多值字段来针对我们的查询进行定制。 ES|QL 源数据字段 ES|QL 可以访问元数据字段。 目前支持的有&#xff1a; _index&#xff1a;文档所属的索引名称。 该字段的…

vue2项目从0搭建(三):配置环境变量及对应的webpack配置

前言 实际业务开发中,一个项目很可能会同时配置好几套环境。 比如:常规开发环境,开发测试环境,正式的测试环境,预发测试环境,客户甲的生产环境,客户乙的生产环境,通用生产环境,独立应用环境,微前端环境,大屏专用环境,移动端环境。 一女多嫁的实际业务场景,就需要我们进行多样…

tensorflow和pytorch都分别存在CPU和GPU版本

TensorFlow和PyTorch都有专门为CPU和GPU优化的版本。它们之间的代码在某些方面有一些不同&#xff0c;但通常可以相对容易地进行转换。以下是一些主要的区别和转换规则&#xff1a; 特性/操作TensorFlowPyTorch转换规则张量创建tf.constant()torch.tensor()创建张量时&#xf…

Android 提示框代码 java语言

在Android中&#xff0c;你可以使用 AlertDialog 类来创建提示框。以下是一个简单的Java代码示例&#xff0c;演示如何创建和显示一个基本的提示框&#xff1a; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; im…

AUTOSAR汽车电子嵌入式编程精讲300篇-基于机器学习的车载 CAN 网络入侵检测(续)

目录 3.2 车载 CAN 总线异常检测技术总结 基于机器学习算法的 CAN 总线入侵检测 4.1 相关知识概述

RocketMq架构和源码解析

NameServer&#xff1a;作为注册中心&#xff0c;提供路由注册、路由踢出、路由发现功能&#xff0c;舍弃强一致&#xff0c;保证高可用&#xff0c;集群中各个节点不会实时通讯&#xff0c;其中一个节点下线之后&#xff0c;会提供另外一个节点保证路由功能。 Broker&#xf…

vatee万腾的科技征途:Vatee独特探索的数字化力量

在数字化时代的浪潮中&#xff0c;Vatee万腾以其独特的科技征途成为引领者。公司在数字化领域的探索之路不仅是技术的创新&#xff0c;更是一种对未知的勇敢涉足&#xff0c;是对新时代的深刻洞察和积极实践。 Vatee万腾通过独特的探索&#xff0c;展示了在数字化征途上的创新力…