2点間の時間を取得する方法

2019-12-04 c++ time chrono elapsedtime

2つのポイント間の経過時間をミリ秒単位の整数または秒単位の倍数で取得しようとしています。 何かに4m /s²の一定の加速度をかけようとしています。私はすでにこれを手に入れました:

int main() {
    double accel = 4, velocity = 0;

    auto start = chrono::system_clock::now();
    sleep(3);
    auto ende = chrono::system_clock::now();

    chrono::duration<double> elapsed_seconds = ende - start;
    velocity += accel * elapsed_seconds;  //This is where I don't know what to put instead of "elapsed_seconds"

    cout << "Velocity after " << elapsed_seconds << "s is " << velocity << "m/s" << endl;
    return 0;
}

しかし、ご覧のとおり、それは機能しません。私はすでにのようなものを見つけました

chrono::duration_cast<ms>(elapsed_time);

しかし、私はそれを機能させることができません。あなたはなにか考えはありますか?

Answers

doubleを「カウント」するとは少し奇妙なことですが、expeded_seconds.count()は基になる値を返します。

秒をダブルとして取得するには:

auto seconds = chrono::duration<double>(ende - start);
auto val = seconds.count();

ミリ秒を取得するには:

auto ms = chrono::duration_cast<chrono::milliseconds>(ende - start);
auto val = ms.count();

duration_castを使用するときは注意してください。精度が失われる可能性があります。

Related