2013-01-03 26 views
52

Tôi đã cố gắng để biên dịch this example program sử dụng GCC (thử nghiệm phiên bản 4.5.1, 4.6.3, 4.8.4):std :: Trạng thái thực hiện put_time trong GCC?

#include <iostream> 
#include <iomanip> 
#include <ctime> 
#include <chrono> 

using std::chrono::system_clock; 

int main() 
{ 
    system_clock::time_point now = system_clock::now(); 
    std::time_t now_c = system_clock::to_time_t(
          now - std::chrono::hours(24)); 
    std::cout << "One day ago, the time was " 
       << std::put_time(std::localtime(&now_c), "%F %T") << '\n'; 
} 

But it tells me:

prog.cpp: In function 'int main()': 
prog.cpp:14:18: error: 'put_time' is not a member of 'std' 

Tôi nghĩ, có lẽ nó không phải đã được triển khai. Vì vậy, tôi đã cố gắng kiểm tra trạng thái triển khai cho chức năng này. Tôi chỉ tìm thấy trang này:

nhưng tôi không thể tìm thấy bất kỳ ghi chú về put_time hoặc chrono hay như nhau. Bất cứ ai có thể chỉ cho tôi một nguồn tài nguyên cung cấp thông tin về tình trạng thực hiện cho thư viện này?

Trả lời

68

Xem TODO extended iomanip manipulators std::get_time and std::put_time cho gcc 4.8.0.

Xem thêm Cross Platform way to get the time of day? tuyên bố không được triển khai trong 4.7.0.


UPDATE: Như nhà phát triển gcc Jonathan Wakely confirmed dưới đây: Các std::get_timestd::put_time thao tác vẫn đang mất tích trong gcc 4.9.


UPDATE: Jonathan Wakely closed vé này vào ngày 22 Tháng 12 2014:

cố định cho GCC 5

Cảm ơn simonwo đã cho tôi biết về nó.

+2

GCC 4.9 đã được phát hành - có vẻ như nó không có trong đó, phải không? – ollo

+4

@ollo Như [Jonathan đã xác nhận] (http://stackoverflow.com/questions/14136833/stdput-time-implementation-status-in-gcc/14137287?noredirect=1#comment35569824_14142342), gcc 4.9 vẫn thiếu các chức năng này. :(Vâng, đó là buồn. – Ali

+0

Vâng, tôi vừa kiểm tra nguồn 4.9 quá, cảm ơn anyway. – ollo

17

Bạn có thể nhận thấy liên kết bạn đã cung cấp không liệt kê bất kỳ phần nào của thư viện!! Nhưng bên dưới bảng nó nói:

Tình trạng của việc thực hiện thư viện có thể được theo dõi trong này table

bảng đó nhấn mạnh rằng std::get_timestd::put_time thao tác được chưa được thực hiện.

Chỉnh sửa: put_time hiện nằm trên trục phát triển GCC.

+4

Trực tiếp từ nhà phát triển :) – Ali

Các vấn đề liên quan