size_t는 부호가 없으므로 음수 값이 허용되지 않습니다. time_t는 최상의 지식을 가진 것으로, -1을 할당 할 수 있습니다. size_t에. 그러나 time_t에 대해서는 완전히 확신하지 못합니다. 내가 헤더 파일을 통해 정의를 따른다면 나는 여기까지 : 여기에std :: string을 comparable * time * 파서에 쓰십시오. 실패 할 수도 있습니다.
typedef __time_t time_t;
:
__STD_TYPE __TIME_T_TYPE __time_t; /* Seconds since the Epoch. */
마지막
#define __TIME_T_TYPE __SYSCALL_SLONG_TYPE
내가 너무 확실하지 않다 무엇 __SYSCALL_SLONG_TYPE이 맞지만, 이고 길이가이라고 생각됩니다. 불행히도,이 추적을 한 후에도 다른 C++ 11 플랫폼에서도 동일한 구현이 이루어 지길 바랍니다. 나는 아직도이 법적, 그들 모두 잘 정의 될 것이라고 확실하지 않다 :
예를 모델링하는 일이, 음의 시간 오프셋을 가질 수 있기 때문에이하는 time_t 서명 할 말이 물론size_t foo = -1;
시간대. 하지만 다른 한편으로는 1970 년 이후로 세는 데는 많은 시간이 걸리기 때문에 부호가없는 것이 당연합니다. 그래서 상식은 두 가지로 진행됩니다. time_t에서 인터넷 검색이 반환되었습니다 :
"역사적인 이유로 인해 일반적으로 1970 년 1 월 1 일 00시 (UTC) 이후로 경과 된 초 수를 나타내는 정수 값으로 구현됩니다 (즉, 유닉스 타임 스탬프). 라이브러리는 대체 시간 표현을 사용하여이 유형을 구현할 수 있습니다. "
출처 :
과 같은 페이지에 http://www.cplusplus.com/reference/ctime/time_t/ ". 휴대용 프로그램이 직접이 유형의 값을 사용하지만, 항상 휴대 종류로 변환하는 표준 라이브러리의 요소에 대한 호출에 의존하지 말아야"
그래서 time_t는 모든 시스템에서 잘 정의되어 있지 않지만 time()은 time_t를 반환하므로 인터페이스에서 내 보내면 처음이 아닙니다. 어떤 다른 유형을 사용해야합니까? 더 바이트를 가지고로, 속도가 느린 구조체 TM처럼 구조체를 사용하기 때문에 그것을 복사하거나 다른 구조체와 비교 :
- 속도 :
나는이 두 가지 이유 부탁 해요 시간이 오래 걸릴 때보 다 느려집니다.
- 주문 : 날짜에 대한 빠른 데이터 형식을 갖고 싶습니다. < b를 사용하여 a와 b 중 어느 것이 먼저 오는지 파악할 수 있습니다.
질문 : time_t가 휴대용 (1) 빠르고 (2) 비교 내가 사용되는 데이터 타입의 종류를 모든 플랫폼에서 잘 정의 된 시간 표현이 아닌 때문에? 모든 플랫폼에서 때묻지 될
#include <iostream>
#include <ctime>
#include <cstring>
int main() {
struct tm tm_a, tm_b;
memset(&tm_a, 0, sizeof(struct tm));
memset(&tm_b, 0, sizeof(struct tm));
if(strptime("2014-01-01 12:00:00", "%Y-%m-%d %H:%M:%s", &tm_a) && strptime("2014-01-01 11:59:59", "%Y-%m-%d %H:%M:%s", &tm_b)) {
if(mktime(&tm_a) > mktime(&tm_b)) std::cout << "time_t ordering OK." << std::endl;
else std::cout << "time_t ordering tainted" << std::endl;
} else std::cout << "failed to parse time" << std::endl;
return 0;
}
은 time_t 것 : time_t의 순서에 대한 예를 들어
?
그럼 당신의 질문은 무엇입니까 – pippin1289
주저하지 않을 것에 대해 사과 드리겠습니다 잠시만 기다려주십시오 – Herbert
이 문제를 받아 들일 수있는 질문으로 생각하십니까 – Herbert