【发布时间】:2014-08-13 20:48:03
【问题描述】:
寻找在系统 (C++) 中管理文件输出的最佳方法。提前感谢您的回复!
系统:
- 连续数周不间断运行
- 只有特定秒的信息需要写入文件(直到秒结束才能预先确定)
- 一种日志/调试类型的文件将以更高的频率(比如每 1-60 秒)和更大的块(每次 0.1-0.5k,可能每分钟几 k)写入。
- 一种摘要类型的文件将以较低的频率(例如每 5-30 分钟)和较小的块(一个短行)写入
我的想法:
-
有两个ofstreams,每个文件一个
- 问题 1:必要时只使用一个 ofstream 和 switch 文件属性会更好吗?
-
创建两个 std::strings 来存储每秒的潜在信息。然后在第二个结束时,如果需要将信息写入一个或多个文件,打开文件,写入,然后关闭。
问题 2:字符串是一个好的支架吗?是否有某种缓冲区我可以在不刷新的情况下写入,然后在第二秒结束时我决定是丢弃还是刷新?
问题 3:鉴于较大的文件可能每秒都被频繁写入,我们是否每秒都打开/关闭?一直保持打开状态会更好吗?
感谢您的宝贵时间。
【问题讨论】:
-
1.每个文件我会有一个单独的 ofstream 。但是,我不知道您是否应该关闭并重新打开它们或保持它们始终打开。 2. string 或 stringstream 都不错。它们在内存中,因此您可以随意使用它们。
-
您需要在系统工作时读取这些文件吗?如果不是,我会在系统工作时保持文件打开。
-
我不需要读取任何一个文件。都是只写的。
-
1) 是的,请 2 个流! 2)字符串是一个很好的持有者,但如果系统不停地工作,写在流程上似乎很有趣,记住字符串和未刷新的io会随着断电而消失。 3)保持开放。或者编写几个较小的日志文件(就像一些数据库服务器那样),并在其名称中使用顺序编号方案。