我正在尝试从文本文件中的传感器写入当前时间和一些数据(距离和幅度)。数据量非常大(传感器以50Hz的频率旋转,每次扫描的数据量可能为5000)。现在我想首先写入当前时间,然后将所有数据放在一行中,如下所示,
11:23:17 (time)
distance1 amplitude1; distance2 amplitude2; ... distance5000 amplitude5000;
11:23:18
distance1 amplitude1; distance2 amplitude2; ... distance5000 amplitude5000;
.
.
.
11:27:00
distance1 amplitude1; distance2 amplitude2; ... distance5000 amplitude5000;
“所以我的问题是如何得到这个?” 我只能写下距离和数据,如下所示
for(int t=0; t<distances.size(); t++)
{
pfsave << distances[t] <<"\t" << amplitudes[t]<<";";
}
pfsave<<endl;
注意:距离的数据类型&amp;振幅
vector<uint32_t> distacnes;
vector<uint32_t> amplitudes;
答案 0 :(得分:1)
你可以在for循环开始之前写下这样的当前时间:
auto t = std::time(nullptr);
auto tm = *std::localtime(&t);
pfsave << std::put_time(&tm, "%H:%M:%S") << std::endl;
然后你的for循环没有endl
,写一行:
for(int t=0; t<distances.size(); t++)
{
pfsave << distances[t] <<"\t" << amplitudes[t]<<";";
}
最后添加endl
,以完成该行:
pfsave << endl;
编辑:关注你的评论
bool canContinue = true; // Condition used to stop the loop when needded
while(canContinue)
{
// Read data from your scanning device
distances = ... ;
amplitudes = ... ;
// Write output file
auto t = std::time(nullptr);
auto tm = *std::localtime(&t);
pfsave << std::put_time(&tm, "%H:%M:%S") << std::endl;
for(int t=0; t<distances.size(); t++)
pfsave << distances[t] <<"\t" << amplitudes[t]<<";";
pfsave << endl;
// Update of canContinue
canContinue = ... ;
}