Я хочу преобразовать временную метку unix, возвращаемую time() как time_t, в целое число. Я искал решение в течение 20 минут и решил спросить здесь.
Каждое найденное мной решение не сработало. При попытке использовать from_time в int, я получаю ошибки:
long int t = static_cast<long int> time(NULL);
ошибка C2061: синтаксическая ошибка: идентификатор "время"
ошибка C2146: синтаксическая ошибка: отсутствует '(' перед идентификатором 'время'
Я очень новичок в C++. Заранее спасибо.
time_t
уже является целым числом, хотя он преднамеренно выбрал тот, который хранит всю систему системы UNIX, поэтому я бы рекомендовал против этого актера.
Однако, если вы настаиваете, вы на правильных строках, но просто неправильно выбрали синтаксис.
В общем, статическое литье e
to T
выглядит так:
static_cast<T>(e) // <-- parentheses!
Так же, как сообщение об ошибке сообщило вам, вы "пропустили" ("перед идентификатором" время ").
Итак, ваше выражение будет:
long int t = static_cast<long int>(time(NULL));
Просто прочитайте ошибки и вставьте "Отсутствие (до времени идентификации":
long int t = static_cast<long int>(time(NULL));
static_cast
требует, чтобы значение было заключено в круглые скобки.
error C2064: term does not evaluate to a function taking 1 arguments
просто добавьте круглые скобки вокруг времени (NULL):
long int t = static_cast<long int>(time(NULL));
time_t
- это 64-битное число на большинстве современных платформ, приведение кint
приведет к потере данных. Также синтаксисstatic_cast<long int>(time(nullptr));