我试过这样的事情:
using clock = std::chrono::system_clock;
clock::time_point nowp = clock::now();
clock::time_point end = nowp + std::chrono::seconds(10);
time_t nowt = clock::to_time_t ( nowp );
time_t endt = clock::to_time_t ( end);
std::cerr << " " << ctime(&nowt) << " " << ctime(&endt) << std::endl;
Run Code Online (Sandbox Code Playgroud)
但它打印:
Sat Dec 16 15:06:43 2017
Sat Dec 16 15:06:43 2017
Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么?怎么加十秒到现在?
问题可能是因为ctimestore 结果在一些静态存储中并且只是将指针返回给您。
所以它用另一个结果覆盖一个结果并打印 2 次。操作顺序不是由标准固定的,所以它的作用是:
ctime使用一个参数,从而节省了在表示内部缓冲器,并返回指向它的指针。ctime与另一个参数,该参数表示保存在同一个内部缓冲器,并返回指向它的指针。解决方案是通过将操作与 ;
为我解决问题的代码
#include <iostream>
#include <chrono>
using namespace std;
int main() {
using clock = std::chrono::system_clock;
clock::time_point nowp = clock::now();
clock::time_point end = nowp + std::chrono::seconds(10);
time_t nowt = clock::to_time_t ( nowp );
time_t endt = clock::to_time_t ( end);
std::cout << " " << ctime(&nowt) << "\n";
std::cout << ctime(&endt) << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)