[英]Opening/Writing to multiple files
我正在尝试编写一些代码,用于将速度和时间值输出到多个文件,特别是4个不同的文件,代表4个不同的对象移动。
我知道要打开并写入1个文件,我可以执行以下操作:
#include <iostream>
#include <fstream>
std::ofstream outfile ("test.txt");
outfile << "my text here!" << std::endl;
outfile.close();
但是我需要调整它,以便它可以在switch语句中工作,如下所示:
for (int i = 0; i < numRobots; i++){
switch (i){
case 0:
if (r1_stop == 1) r1Speed = 0;
else //Update speed
r1File << r1Speed << " " << time << endl;
case 1:
if (r2_stop == 1) r2Speed = 0;
else //Update speed
r2File << r2Speed << " " << time << endl;
case 2:
if (r3_stop == 1) r3Speed = 0;
else //Update speed
r3File << r3Speed << " " << time << endl;
case 3:
if (r4_stop == 1) r4Speed = 0;
else //Update speed
r4File << r4Speed << " " << time << endl;
}
}
其中r1File,r2File,r3File和r4File是包含相应对象的速度和时间的文件。 我不太确定如何实现这种类型,我打开了多个文件,或者我是否必须继续打开和关闭文件? 我担心覆盖文件中的现有数据,如果是这种情况,除非它知道在再次打开文件时不从文件的开头开始。
任何帮助表示赞赏,谢谢
默认情况下,std :: ofstream会覆盖而不是追加,所以从打开文件的那一刻起,它将成为流式字节,覆盖打开之前的所有内容。
* fstream变体保持文件打开,直到流对象被销毁。 换句话说,打开的文件与表示它的* fstream对象的生命周期相关联。 一旦销毁,文件立即关闭。 这个概念被称为RAII 。 在您的情况下,流对象是全局的,因此在main()结束之后,在应用程序终止之前销毁。
如果写入文件不是时间关键,那么您的实现就足够了。 另一方面,如果您需要更准确的测量,请考虑将每个输出写入中间缓冲区(如std :: stringstream),然后在完成测量后将这些数据传输到文件中。
但是,如果您不需要先前应用程序运行的数据,请不要使用文件,而只需使用std :: stringstream写入内存。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.