C++ 如何将'std::chrono::millizes'转换为'boost::posix_time::millizes'`

C++ 如何将'std::chrono::millizes'转换为'boost::posix_time::millizes'`,c++,c++11,boost,boost-asio,chrono,C++,C++11,Boost,Boost Asio,Chrono,我在tcp套接字上使用boost::asio::deadline\u计时器设置async\u read操作之前的超时时间。我使用的是boost 1.61 问题: 我的代码的其他部分使用的是std::chrono::ms。我希望使用std::chrono而不是的“长时间超时”&如果可能的话,使用std::chrono::毫秒而不是boost::posix\u time::毫秒。我该怎么做 问题: 那么,我如何在这里使用std::chrono::millides?有没有一种方法可以从std::chr

我在tcp套接字上使用boost::asio::deadline\u计时器设置
async\u read
操作之前的超时时间。我使用的是boost 1.61

问题:
我的代码的其他部分使用的是
std::chrono::ms
。我希望使用
std::chrono
而不是
的“长时间超时”
&如果可能的话,使用
std::chrono::毫秒
而不是
boost::posix\u time::毫秒
。我该怎么做

问题:

那么,我如何在这里使用
std::chrono::millides
?有没有一种方法可以从
std::chrono::millides
转换为
boost::posix_time::millides

直接解决方案:
duration\u cast

请注意,这将改变您的

long time_out_millis = 2000;
变成

Clock::duration timeout = 2000ms;

谢谢你这么详细的回答。你是说
Clock::duration
还是
std::chrono::system\u Clock::duration
?你的答案很好。我明白了,但不确定你所说的
Clock::duration timeout=2000ms是什么意思。那是不可编译的。尝试使用
std::chrono::system_clock::duration timeout=2000ms
会产生一些与持续时间相关的编译错误
clock
在直接解决方案中,将是
std::chrono::high_resolution_clock
的类型定义,而不应是
毫秒
<代码>boost::posix_time::毫秒(持续时间_cast(2s).count())@Quokka我想是的。干杯虽然这些天我会写
duration/1s
或者我认为是
duration/1.0ms
等等,
#include <boost/asio/high_resolution_timer.hpp>
#include <boost/asio/high_resolution_timer.hpp>
using namespace std::chrono_literals;

int main() {
    boost::asio::io_service svc;

    boost::asio::high_resolution_timer tim(svc);

    tim.expires_from_now(1s);
    tim.expires_from_now(100ms);
    tim.expires_from_now(3h);
    tim.expires_from_now(15'000us);
    tim.expires_from_now(15'000'000ns);
}
long time_out_millis = 2000;
Clock::duration timeout = 2000ms;