C++11 C+中循环的多个+;

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; ..

我试图将当前时间和传感器的一些数据(距离和振幅)写入文本文件。数据量非常大(传感器以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;

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 = ... ;
}