【发布时间】:2016-10-28 06:59:36
【问题描述】:
出于学习目的,我正在用 C++ 编写一个简单的日志记录类。我的代码包含一个返回今天日期字符串的函数。但是,每当调用“localtime”时,都会出现编译器错误。
std::string get_date_string(time_t *time) {
struct tm *now = localtime(time);
std::string date = std::to_string(now->tm_mday) + std::to_string(now->tm_mon) + std::to_string(now->tm_year);
return date;
}
我尝试过使用#define _CRT_SECURE_NO_WARNINGS。它没有用,并且出现了同样的错误。我还尝试将_CRT_SECURE_NO_WARNINGS 放在项目属性的预处理器定义中。这给出了一个未解决的外部错误。
有没有人知道该怎么做?
【问题讨论】:
-
确切的警告信息在哪里?
localtime使用起来可能很危险,因为它返回一个指向它拥有的内存区域的指针,所以如果你多次调用它,你需要确保每次复制结构时都需要。另外,顺便说一下,你创建字符串的方式,如果你得到“2112016”,你不知道那是 21/1/2016 还是 2/11/2016。 -
请勿使用此功能,原因在警告中给出。
标签: c++ date datetime localtime ctime