C++11 C+中循环的多个+;
我试图将当前时间和传感器的一些数据(距离和振幅)写入文本文件。数据量非常大(传感器以50Hz频率旋转,每次扫描的数据量可能为5000)。现在我想先写当前时间,然后把所有数据写在一行中,就像这样C++11 C+中循环的多个+;,c++11,for-loop,C++11,For Loop,我试图将当前时间和传感器的一些数据(距离和振幅)写入文本文件。数据量非常大(传感器以50Hz频率旋转,每次扫描的数据量可能为5000)。现在我想先写当前时间,然后把所有数据写在一行中,就像这样 11:23:17 (time) distance1 amplitude1; distance2 amplitude2; ... distance5000 amplitude5000; 11:23:18 distance1 amplitude1; distance2 amplitude2; ..
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;
for(int t=0;t在for循环开始之前,您可以这样编写当前时间:
auto t = std::time(nullptr);
auto tm = *std::localtime(&t);
pfsave << std::put_time(&tm, "%H:%M:%S") << std::endl;
最后添加endl
,以完成该行:
pfsave << endl;
pfsave您似乎忘记在问题中包含一个问题。当您希望将所有数据放在一行时,我建议不要写入endl
。问题是如果我这样做,它将只写入一行(所有数据仅来自一次扫描)然后它会停止。我想连续地写入数据。然后你需要将所有这些放入while
或for
循环中,在每次迭代中获取距离和振幅。我尝试了while循环,我的程序进入了无限循环。如果我尝试for
循环,它会一次又一次地写入相同的数据。关于无限循环:您需要定义一个停止条件(可能是来自扫描设备的信号,或者GUI中的按钮,由您决定)。关于写入相同的数据,您需要从扫描设备刷新阵列。您应该查看其制造商提供的示例,或者如果您正在使用SDK,则查看SDK提供的示例。
for(int t=0; t<distances.size(); t++)
{
pfsave << distances[t] <<"\t" << amplitudes[t]<<";";
}
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 = ... ;
}