向日志添加时间
Adding times to logs
我正在使用SFML 1.6制作游戏,有时会出现错误,当用户运行游戏时,我不希望控制台显示,所以我将stderr
(SFML显然用于记录错误)重定向到以当前日期命名的文件。因此,如果出现错误,用户只需检查日志即可。现在我还想在每个日志之前放置时间,因此日志文件将如下所示:
12:34:17 CDT
failed to load image "sprite.png"
12:35:01 CDT
failed to load file "font.ttf"
有没有办法将当前时间"固定"到任何输出上以获得上面显示的结果?
编辑
我忘了提,SFML 库是记录大多数错误的库,我想在它离开应用程序时附加时间,可以这么说。有点像收费站,除了任何离开都会提前一段时间。我知道如何将时间作为字符串获取,而且我不是调用 printf 或任何其他类似函数的人。
您可以比简单的重定向做得更好:您实际上可以在传入的字符流和写入文件之间插入自己的代码。
基本思想是从filebuf
派生一个类,以控制放置的字符。
您有两种策略:
- 简单的方法是,每次读取
n
字符时,您都会设置一个标志,然后在之后的第一个put
插入时间戳(并取消设置标志) - 困难的方法是缓冲输出,直到满足
n
字符,此时格式化时间戳,然后刷新缓冲区(直到n
)
如果我们认为每行格式的开始和结束之间没有太多时间,那么简单的方法应该足够可靠地工作。
我认为压倒xsputn
应该足以完成工作。
如果您可以修改执行实际打印的函数,那么是的(我建议您查找函数time
、ctime
、localtime
和 strftime
)。如果不能修改函数,那就不行。
相关文章:
- 在 C++ 中为文件名添加时间戳
- 将树节点添加到向量向量中的 n 元树遍历的平均和最坏情况时间复杂度是多少?
- 将结构时间规范添加到类(似乎没有其他类型的)会导致EXEC_BAD_ACCESS
- 使用霍华德·欣南特的日期库将时间信息添加到year_month_day
- 即使在多任务处理时,添加用户时间 + 系统时间(来自 shell 的时间命令)是否是一种可靠的措施?
- 添加两个时间值存储为数据库中的字符串
- 将时间戳添加到文本文件中的空行中
- 如何将持续时间添加到time_point
- 使用结构显示军事时间,并将一秒钟的时间添加到用户输入(C )中
- 标准::时间 将天数添加到当前日期
- MF SinkWriter mp4文件的播放持续时间是添加音频样本时的一半,图像的播放速度也是添加音频样本的两倍
- 添加时间戳值
- 以 hh:mm 格式添加时间,C++
- C 编译时间添加
- 向C++中的任何日期结构添加一定时间量
- 使用 std::cout 添加时间戳
- Windows Batch - 如何在将标准输出重定向到文件时添加时间戳
- 如何使用c++将所有类的执行时间添加到单个文本文件中
- 时间添加+随时间检测
- 如何在C++中简洁地将当前时间添加到字符串中