- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在新编译器上遇到了一个老问题。在尝试使用 std::chrono
打印当前时间时,我收到以下错误:
src/main.cpp:51:30: error: ‘put_time’ is not a member of ‘std’
std::cout << std::put_time(std::localtime(&time), "%c") << "\n\n";
^~~
有问题的片段没什么特别的:
#include <chrono>
...
auto time = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
std::cout << std::put_time(std::localtime(&time), "%c") << "\n\n";
这看起来非常像 GCC 4.x 系列中返回的错误,正如到处引用的那样:
这个理论的唯一问题是我的 GCC 是现代的:
$ g++ --version
g++ (GCC) 6.3.1 20161221 (Red Hat 6.3.1-1)
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
我还检查了我的应用程序是否链接到适当的库:
$ ldd build/myapp
...
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007fde97e7b000)
libc.so.6 => /lib64/libc.so.6 (0x00007fde97595000)
最后,我的编译标志中没有发生任何奇怪的事情:
g++ -g -Wall -Werror -std=c++11 -Wno-sign-compare src/main.cpp -c -o obj/main.o
我能想到的所有检查都表明这应该有效。那么,简而言之,是什么给出了呢?
最佳答案
问题是您包含了错误的 header 。 std::put_time
声明于 <iomanip>
,不是<chrono>
.
Also, it is not complaining about any of the other time operations such as
std::localtime
andto_time_t
.
std::localtime
声明于 <ctime>
.
关于C++11:现代 g++ 上的 "put_time is not a member of std",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45070588/
据我了解,重载运算符会被编译器翻译成方法调用,例如: stream #include #include int main() { std::ostream s {std::cout.rdb
下面的代码将打印带有时区偏移量的时间,传递小写格式说明符z: #include #include #include using namespace std; int main() { t
put_time 提供 2 个转换说明符用于输出月中的日期: %d : "一个月中的第几天,用零填充 (01-31)" %e : "一个月中的第几天,用空格填充 (1-31)" 请注意,这些转换说明符
我的程序解析一个表示日期格式为 YYYYMMDD 的字符串,并以 dayOfWeek、Month Day、Year 的形式打印它。例如,给定字符串 20131224,程序应打印 Sunday, Dec
您好,我这里有一个非常简单的测试用例,可以在 visual studio 2012 下编译。但是它会产生运行时故障。产生此故障的行被完全复制,就像他们在 cppreference.com 上的许多与时
我有一个函数作为 transTime() { time_t const now_c = time(NULL); cout > myTime; return myTime; } 当我调用
我想了解 std::put_time 的工作原理,以及如何获取“YYYY/MM/DD HH:MM:SS”格式的日期戳。现在我写这样的东西: std::chrono::time_point now =
我正在使用以下代码来获取 C++ 中的当前时间。 std::time_t t = std::time(nullptr); std::time(&t); std::cout 特征。如果您可以使用 C++
我正在使用 Microsoft Visual Studio 2012,并且正在考虑使用 std::put_time,因此我创建了以下示例: int main() { std::time_t t
我试图编译 this example program使用 GCC(测试版本 4.5.1、4.6.3、4.8.4): #include #include #include #include us
编辑:初始化tmb.tm_isdst为0 我在解析带有“AM” /“PM”字段的日期时遇到问题。通常,无论我使用哪种转换说明符组合,它似乎都会忽略此字段。有时似乎是随机解析时间。 我解析的示例日期是
初始点 让我们假设 Windows 上的第三方组件使用以下函数创建一个表示日期的字符串: std::string getDate() { std::tm t = {}; std::ti
我在新编译器上遇到了一个老问题。在尝试使用 std::chrono 打印当前时间时,我收到以下错误: src/main.cpp:51:30: error: ‘put_time’ is not a me
我正在学习使用 C++11 chrono,并尝试输出时间。 Other SO questions显示一些代码示例,例如 std::chrono::time_point now = std::chron
我暂时停留在 GCC4.8 上。我想将当前时间打印为秒以外的时间。如果 put_time工作,我的代码会很简单,像这样: std::cout ,但这不起作用,因为它没有任何东西可以自动格式化时间。我
下面这个小例子给出了我不理解的结果。 #include #include #include #include int main() { auto currentTime = std::
我是一名优秀的程序员,十分优秀!