[英]What are the alternatives for C++11 chrono?
我正在运行下面的代码,该代码检查data_timestamp
是否已使用了两周以上。 如果已使用两周以上,则打个hello
否则打印world
。
我是Java开发人员,最近开始使用C ++。 通过互联网了解了一些东西,所以我在此程序中使用它。 我没有意识到并非所有代码都可以使用C ++ 11功能运行。
#include <ctime>
#include <chrono>
#include <iostream>
int main()
{
uint64_t data_timestamp = 1406066507000;
const auto now = std::chrono::system_clock::now();
auto twoWeeks = std::chrono::hours(24 * 14);
auto lastTwoWeeks = now - twoWeeks;
auto millis = std::chrono::duration_cast<std::chrono::milliseconds>(lastTwoWeeks.time_since_epoch()).count();
std::cout << "Time stamp in milliseconds since UNIX epoch start: "<< millis << std::endl;
if (data_timestamp < millis) {
std::cout << "Hello";
} else {
std::cout << "World";
}
return 0;
}
当前,以上代码使用C ++ 11功能,但是我使用上面两周时间戳的代码逻辑的实际代码不支持C ++ 11,因此我正在寻找各种替代方法。
在这里不需要C ++ 11可移植性的我还能使用什么? 我可以在这里使用<ctime>
或Boost.Chrono
吗?
任何与上述代码具有相同功能且不使用C ++ 11功能的简单示例都将提供很大的帮助。
更新:-
下面是我正在尝试的代码-
#include <boost/chrono/chrono.hpp>
#include <iostream>
int main()
{
uint64_t data_timestamp = 1406066507000;
const auto now = boost::chrono::system_clock::now();
auto twoWeeks = boost::chrono::hours(24 * 14);
auto lastTwoWeeks = now - twoWeeks;
auto millis = boost::chrono::duration_cast<boost::chrono::milliseconds>(lastTwoWeeks.time_since_epoch()).count();
std::cout << "Time stamp in milliseconds since UNIX epoch start: "<< millis << std::endl;
if (data_timestamp < millis) {
std::cout << "Hello";
} else {
std::cout << "World";
}
return 0;
}
当我使用下面的make install -j4
编译代码时,我又回来了-
warning: âautoâ changes meaning in C++11; please remove it [-Wc++0x-compat]
error: ânowâ does not name a type
warning: âautoâ changes meaning in C++11; please remove it [-Wc++0x-compat]
error: âtwoWeeksâ does not name a type
warning: âautoâ changes meaning in C++11; please remove it [-Wc++0x-compat]
error: âlastTwoWeeksâ does not name a type
warning: âautoâ changes meaning in C++11; please remove it [-Wc++0x-compat]
error: âmillisâ does not name a type
error: âmillisâ was not declared in this scope
我想提醒boost::chrono
以来,C ++ 11级的规格在很大程度上是基于boost::date_time
(提案读如这一次揭示了多少提振用作基地std::chrono
)。 正如霍华德·辛南特(Howard Hinnant)所说,然后从std::chrono
复制了boost::chrono
std::chrono
一旦获得C ++ 11编译器,它也将使您更轻松(很容易移植到std::
一个简单的例子:
#include <boost/chrono/chrono.hpp>
#include <iostream>
int main()
{
uint64_t data_timestamp = 1406066507000;
const boost::chrono::system_clock::time_point now = boost::chrono::system_clock::now();
boost::chrono::hours twoWeeks = boost::chrono::hours(24 * 14);
boost::chrono::system_clock::time_point lastTwoWeeks = now - twoWeeks;
boost::int_least64_t millis = boost::chrono::duration_cast<boost::chrono::milliseconds>(lastTwoWeeks.time_since_epoch()).count();
std::cout << "Time stamp in milliseconds since UNIX epoch start: "<< millis << std::endl;
if (data_timestamp < millis) {
std::cout << "Hello";
} else {
std::cout << "World";
}
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.