Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将持续时间添加到时间点?_C++_Chrono - Fatal编程技术网

C++ 如何将持续时间添加到时间点?

C++ 如何将持续时间添加到时间点?,c++,chrono,C++,Chrono,我试过这样的方法: 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 << "

我试过这样的方法:

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;

我做错了什么?如何将10秒添加到现在?

问题可能是因为
ctime
store会导致一些静态存储,并返回指向您的指针

因此,它会用另一个结果覆盖一个结果并打印两次。 标准没有规定操作顺序,因此其作用是:

  • 使用一个参数调用
    ctime
    ,它将表示形式保存在内部缓冲区中并返回指向它的指针
  • 使用另一个参数调用
    ctime
    ,该参数将表示形式保存在同一内部缓冲区中,并返回指向它的指针
  • 打印两个字符*的值(实际上是同一个指针)
  • 解决方案是通过使用
    划分操作来强制计算顺序

    编码

    #包括
    #包括
    使用名称空间std;
    int main(){
    使用时钟=标准::时钟::系统时钟;
    clock::time_point nowp=clock::now();
    时钟::时间\点结束=nowp+std::时钟::秒(10);
    time\u t nowt=时钟::到时间(nowp);
    time\u t endt=时钟::至\u time\u t(结束);
    
    std::对我来说,您的代码有效:
    2017年12月16日周六16:26:27 2017年12月16日周六16:26:37
    有关打印计时对象的更简单方法,请参阅。
    Sat Dec 16 15:06:43 2017
    Sat Dec 16 15:06:43 2017
    
    #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;
    }