Я заметил странное поведение при печати вывода в поток. Мой код перебирает большой набор данных и, среди прочего, считывает метку времени из каждого элемента. Временная метка первого элемента сохраняется, чтобы можно было рассчитать прошедшее время.
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. Это достаточно легко обойти, но я хотел бы понять, что происходит.