gpt4 book ai didi

C++11:现代 g++ 上的 "put_time is not a member of std"

转载 作者:行者123 更新时间:2023-12-01 19:58:52 26 4
gpt4 key购买 nike

我在新编译器上遇到了一个老问题。在尝试使用 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 and to_time_t.

std::localtime声明于 <ctime> .

关于C++11:现代 g++ 上的 "put_time is not a member of std",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45070588/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com