Nicolai M. Josuttis의 "C++ 표준 라이브러리 (Second Edition)"152 페이지의 예제를 따르고 있습니다. -153에는 C++ 11에 도입 된 std::chrono::system_clock
의 시간, 현재 시간, 최소 시간 및 최대 시간을 인쇄하는 예제가 자세히 설명되어 있습니다.std :: chrono :: system_clock :: time_point :: min()을 문자열로 변환 할 때 잘못된 널 포인터 오류가 발생했습니다.
Microsoft Visual Studio 2012를 사용 중이고 유효하지 않은 널 포인터로 인해 에 트리거 된 어설 션이 발생합니다. 이 아래 tp = std::chrono::system_clock::time_point::min();
#include <chrono>
#include <ctime>
#include <string>
#include <iostream>
std::string asString(const std::chrono::system_clock::time_point& tp)
{
std::time_t t = std::chrono::system_clock::to_time_t(tp);
std::string ts = std::ctime(&t);
ts.resize(ts.size()-1);
return ts;
}
int main()
{
std::chrono::system_clock::time_point tp;
std::cout << "epoch: " << asString(tp) << std::endl;
tp = std::chrono::system_clock::now();
std::cout << "now: " << asString(tp) << std::endl;
tp = std::chrono::system_clock::time_point::min();
std::cout << "min: " << asString(tp) << std::endl;
tp = std::chrono::system_clock::time_point::max();
std::cout << "max: " << asString(tp) << std::endl;
return 0;
}
Dinkumware에 의해 구현 오류로 인해이 <chrono>
라이브러리에, 또는 책의 단지 오타/실수를 설정 한 후 코드의 라인 std::string ts = std::ctime(&t)
에 발생? 책에있는 코드를 여러 번 반복하여 잘못 복사했는지 여부를 확인했습니다. 그러나이 경우에는 나타나지 않습니다. 나는 주어진 통찰력에 대해 매우 감사 할 것입니다.
오류를 확인하는 것은 어떻습니까? 'ctime'은 잘 정의 된 인터페이스를 가지고 있습니다. –