C ++中的多个for循环

时间:2016-10-17 07:56:32

标签: c++11 for-loop

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

1 个答案:

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