【发布时间】:2013-10-17 21:49:51
【问题描述】:
我注意到在将输出打印到流时出现了奇怪的行为。我的代码遍历一个大型数据集,除其他外,从每个项目中读取时间戳。存储第一项的时间戳,以便计算经过的时间。
CurTime = ev[i].MidasTimeStamp;
RunTimeElapsed = difftime(CurTime,StartTime);
cout << "StartTime: " << ctime(&StartTime) << "CurTime: " << ctime(&CurTime) << "Elapsed: " << RunTimeElapsed << " s" << endl;
打印到屏幕的输出显示同一时间打印两次例如:
StartTime: Mon Sep 23 14:44:57 2013
CurTime: Mon Sep 23 14:44:57 2013
Elapsed: 360 s
但如果将打印行一分为二:
cout << "StartTime: " << ctime(&StartTime);
cout << "CurTime: " << ctime(&CurTime) << "Elapsed: " << RunTimeElapsed << " s" << endl;
我得到了预期的输出:
StartTime: Mon Sep 23 14:44:57 2013
CurTime: Mon Sep 23 14:50:57 2013
Elapsed: 360 s
两个输出之间的唯一变化是 cout 行。这很容易解决,但我想了解发生了什么。
【问题讨论】: