我对C ++很陌生。我需要获取当前年份并将其存储在一个整数中。
我已经解决了这个问题:
std::time_t result = std::time(nullptr);
std::istringstream iss(ctime(&result));
iss.ignore(20);
int year;
iss >> year;
即使找到可行的解决方案,我也觉得它有点难看,因为它似乎不是很健壮,并且需要很多步骤来解决很多问题。
会有更好的方法吗?
C ++ 20,您可以将std::chrono
用于此目的。
time_t
转换为字符串,然后进行字符串解析,这对我来说似乎是不必要的复杂且容易出错。如@Ted's comment中已抱怨的那样,这可能会引入文本输出的本地化,这可能会使解析变得不那么健壮。
与std::time()
一起可用
std::time()
将自纪元起的给定时间作为std :: time_t值转换为日历时间,以本地时间表示。
std::localtime()
将自纪元以来的给定时间转换为std :: time_t值,转换为日历时间,以协调世界时(UTC)表示。
都返回一个指向std::localtime()
的指针,该指针除其他外还包含一个公共成员
std::gmtime()
年,自1900年以来>小样本:
std::gmtime()
输出:
struct tm
struct tm