C/C++

Срочно. Часы на с++

Ввел код: std::time_t t = std::time(0);
std::tm* local = std::localtime(&t);
std::cout << std::put_time(local, "%F") << std::endl;
std::cout << std::put_time(local, "%T") << std::endl;
но visual studio ругается. Как написать такой код (часы) на с++ чтобы ни один компилятор не ругался. Прошу, в ответе дайте правельный код, чтобы он делал эту же задачу
Под Windows в Microsoft стандартная библиотека C имеет ряд существенных отличий, которые заключаются в использовании безопасных функций с суффиксом _s, возвращающие код ошибки либо 0 при успешном завершении. Стандарт языка и стандарт для библиотеки – это разные вещи и рассчитывать, что все библиотеки будут одинаково работать, не приходится. Поэтому в таких случаях используют условную компиляцию, в основу которой положены директивы препроцессора. Это первое. Второе, это то, что нет особой необходимости писать кроссплатформенный код в консоли с выводом текстовой информации. Есть, конечно, системные утилиты, которые позволяют в режиме командной строки вести диалог, но это, главным образом, позволяет отдавать команды и получать информацию о их выполнении. В остальных случаях используется GUI. Консольные приложения используются для обучения программированию и уделять пристальное внимание локализации и кроссплатформенности не стоит, если конечно вы не обучаетесь написанию кроссплатформенного кода или локализации. C/C++ изначально предназначены для системного программирования, а устройствам, т. е. железу ввод/вывод не нужен. Они читать с монитора не умеют. У них глазки отсутствуют.
Тимофей Зубарев
Тимофей Зубарев
64 516
Лучший ответ
Это рабочий код, хоть в современном C++ лучше использовать < chrono >

А что он у Вас не компилируется в Visual Studio - скорее всего не так проект создали.
А это уже проблемы не кода. Ну и в любом случае стоило написать какую ошибку выдал VS.

В абсолютно любом - скорее всего не получится. Стандарты менялись. Н-р put_time доступна с 11 стандарта, соотв. в старых компиляторах не работает, с другой стороны в совсем старых компиляторах нет пространства std. Соотв. всё что std:: вызовет ошибки. А без std не будет работать в новых. Ну или опять-же в старых компиляторах надо подключать заголовки с .h (н-р include < iostream. h > и т. д.

Пруф:
https://onlinegdb.com/fe3J_90j4
А куда вы его вводили и было ли там написано что либо, помимо этого кода?
Андрей Правиленко #include < iostream >
#include < ctime >
#include < iomanip >

using namespace std;

int main() {
std::time_t t = std::time(0);
std::tm* local = std::localtime(&t);
std::cout << std::put_time(local, "%F") << std::endl;
std::cout << std::put_time(local, "%T") << std::endl;

return 0;
}