error: 'format' is not a member of 'std'
Решил значит воспользоваться функцией std::format() в C++ (гуглил, в С++ такая функция поддерживается с C++20). Вот код:
#include <bits/stdc++.h>
int main() {
auto now = std::chrono::system_clock::now();
time_t now_t = std::chrono::system_clock::to_time_t(now);
auto time = std::put_time(localtime(&now_t), "%m.%Y");
std::cout << std::format("{}", time);
return 0;
}
Далее в cmd ввёл:
cd C:\Apache24\cgi-bin
g++ main.cpp -o main.cgi
Ну она решила вынести мне мозги своим ответом:
main.cpp: In function 'int main()':
main.cpp:34:23: error: 'format' is not a member of 'std'
34 | std::cout << std::format("{}", time);
|
P.S.: использую VS Code, вот содержимое файла c_cpp_properties:
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"compilerPath": "C:\\msys64\\mingw64\\bin\\g++.exe",
"cStandard": "c17",
"cppStandard": "gnu++20",
"intelliSenseMode": "windows-gcc-x64"
}
],
"version": 4
}
P.P.S.: Понятное дело, что я привёл лишь часть кода из main.cpp, потому что остальной код не участвует в той проблеме, что я выше привёл.
Ответы (1 шт):
std::put_time() предназначен для выдачи времени сразу в ostream, а std::format() принимает непосредственно std::chrono::time_point. Грубо говоря, это две альтернативы, одна - C++11, другая - C++20.
#define _CRT_SECURE_NO_WARNINGS (1) // Для localtime()
#include <ctime>
#include <chrono>
#include <format>
#include <iomanip>
int main() {
auto now = std::chrono::system_clock::now();
std::cout << "std::format: " << std::format("{:%m.%Y}\n", now);
time_t now_t = std::chrono::system_clock::to_time_t(now);
std::cout << "std::put_time: " << std::put_time(localtime(&now_t), "%m.%Y")
<< '\n';
return 0;
}
Как бы, Microsoft Visual Studio Community 2022 (64-разрядная версия) - Current, Версия 17.12.2, не возражает. ?
std::format: 04.2025
std::put_time: 04.2025