VS2022已引入<format>仍提示std无format成员如何解决
问题修复方案
报错根本原因
std::format 是C20标准新增的特性,VS2022默认项目配置未启用C20支持,因此即便添加了#include <format>头文件也会提示找不到该成员。
修复步骤
方案一:启用C++20标准支持
- 右键点击解决方案资源管理器中的项目名称,选择「属性」
- 依次进入「配置属性」→「C/C++」→「语言」设置页
- 找到「C++ 语言标准」选项,选择「ISO C20 标准 (/std:c20)」,也可选择更高的「ISO C最新草案标准(/std:clatest)」获得更完整的C++20特性支持
- 保存配置后重新编译代码即可
如果修改配置后仍有报错,可升级VS2022到最新更新版本,早期版本VS2022对std::format的chrono格式化支持存在缺陷
方案二:使用已安装的date.h库实现(兼容性更好)
该方案不需要依赖C20特性,C17及以上版本即可运行,替换代码如下:
#include <iostream> #include <chrono> #include <date.h> #include <type_traits> #include <string> int main() { std::cout << "The current time is "; auto start_time = date::format("%F %T", std::chrono::system_clock::now()); static_assert(std::is_same_v<decltype(start_time), std::string>{}); std::cout << start_time << "\n"; }
内容的提问来源于stack exchange,提问作者Enderbyte09
相关产品推荐
相关产品推荐

