format 相关问题

它可以指文本格式,内容格式,文件格式,文档文件格式等。

将 Posixct 转换为数字时的负时间(以秒为单位)

我有一个 POSXIct 格式的时间变量,想将其转换为数字格式,以处理秒数差异,但是当将其传递为数字格式时,秒显示为负数...

回答 1 投票 0

存储 std::format_args 时的生命周期问题

见以下代码: #包括 #包括 #包括 #包括 类异常_t : 公共 std:: 异常 { 民众: 模板 参见以下代码: #include <print> #include <exception> #include <string> #include <format> class exception_t : public std::exception { public: template<class... args_t> exception_t(std::string_view users_fmt, args_t&&... args) : m_users_fmt(users_fmt) , m_format_args(std::move(std::make_format_args(args...))) {} char const* what() const noexcept override { thread_local static std::string s = std::vformat(m_users_fmt, m_format_args); return s.c_str(); } private: std::string m_users_fmt; std::format_args m_format_args; }; int main() try { throw exception_t("{}", 42); } catch (std::exception& e) { std::println("{}", e.what()); } 在使用 SDK 10.0.19041.0 的 MSVC 2022 v143 下调试此问题时,我发现在构建 exception_t 期间,m_format_args 有一个适当的值,但在调用 What() 时,m_format_args 有一个无效值。这很可能是一生的问题,但我看不出出了什么问题。 (大多数情况下这个程序不打印 42) 我在这里做错了什么? ====================================================== HolyBlackCat回复后更新 上面是一个最小的代码片段,但其目的是将格式与异常/错误/警告报告完全分开。我想存储带有参数的标准类型,例如在磁盘上。随后另一个进程从磁盘读取数据并使用本地语言的格式字符串显示数据。这就是为什么我不想在此代码片段的构造函数中调用 std::vformat 的原因。 是否存在 std::format_args 的替代方案?例如。我可以存储参数吗? 我找到了一种存储参数并使程序运行的方法。我需要添加类型variant_t和variants_t并定义用户定义的格式化程序。那么上面的代码片段只需要一些小改动: #include <print> #include <exception> #include <string> #include <format> class exception_t : public std::exception { public: template<class... args_t> exception_t(std::string_view users_fmt, args_t&&... args) : m_users_fmt(users_fmt) , m_variants(args...) {} char const* what() const noexcept override { m_variants.resize(16, 0); thread_local static std::string s = std::vformat(m_users_fmt, std::make_format_args(m_variants[0], m_variants[1], m_variants[2], m_variants[3], m_variants[4], m_variants[5], m_variants[6], m_variants[7], m_variants[8], m_variants[9], m_variants[10], m_variants[11], m_variants[12], m_variants[13], m_variants[14], m_variants[15])); return s.c_str(); } private: std::string m_users_fmt; mutable variants_t m_variants; }; int main() try { throw exception_t("{}", 42); } catch (std::exception& e) { std::println("{}", e.what()); } 这并不完全理想: 参数数量限制为16个 what() 不再是可重入的(您对 const 函数的期望) variant_t、variants_t 和用户定义格式化程序的定义如下: #include <variant> #include <vector> using variant_t = std::variant < bool , char , int , unsigned int , long long , unsigned long long , float , double , long double , void const* >; // helper type for the visitor #4 template<class... Ts> struct overloaded : Ts... { using Ts::operator()...; }; template<> struct std::formatter<variant_t, char> { template<class parse_context_t> constexpr parse_context_t::iterator parse(parse_context_t& ctx) { for(auto it = ctx.begin(); it != ctx.end(); ++it) { m_format += *it; if (*it == '}') { return it; } } m_format += '}'; return ctx.end(); } template<class fmt_context_t> fmt_context_t::iterator format(variant_t const& variant, fmt_context_t& ctx) const { return std::visit(overloaded{ [&ctx, this](bool v) { return std::vformat_to(ctx.out(), m_format, std::make_format_args(v)); }, [&ctx, this](char v) { return std::vformat_to(ctx.out(), m_format, std::make_format_args(v)); }, [&ctx, this](int v) { return std::vformat_to(ctx.out(), m_format, std::make_format_args(v)); }, [&ctx, this](unsigned int v) { return std::vformat_to(ctx.out(), m_format, std::make_format_args(v)); }, [&ctx, this](long long v) { return std::vformat_to(ctx.out(), m_format, std::make_format_args(v)); }, [&ctx, this](unsigned long long v) { return std::vformat_to(ctx.out(), m_format, std::make_format_args(v)); }, [&ctx, this](float v) { return std::vformat_to(ctx.out(), m_format, std::make_format_args(v)); }, [&ctx, this](double v) { return std::vformat_to(ctx.out(), m_format, std::make_format_args(v)); }, [&ctx, this](long double v) { return std::vformat_to(ctx.out(), m_format, std::make_format_args(v)); }, [&ctx, this](void const* v) { return std::vformat_to(ctx.out(), m_format, std::make_format_args(v)); }, }, variant); } std::string m_format{"{:"}; }; class variants_t : public std::vector<variant_t> { public: constexpr variants_t() = default; template<class... args_t, class T> constexpr variants_t(T first_arg, args_t&&... args) { push_back(first_arg); variants_t v(args...); insert(end(), v.begin(), v.end()); } };

回答 1 投票 0

std::format_args 的生命周期问题

见以下代码: #包括 #包括 #包括 #包括 类异常_t : 公共 std:: 异常 { 民众: 模板 参见以下代码: #include <print> #include <exception> #include <string> #include <format> class exception_t : public std::exception { public: template<class... args_t> exception_t(std::string_view users_fmt, args_t&&... args) : m_users_fmt(users_fmt) , m_format_args(std::move(std::make_format_args(args...))) {} char const* what() const noexcept override { thread_local static std::string s = std::vformat(m_users_fmt, m_format_args); return s.c_str(); } private: std::string m_users_fmt; std::format_args m_format_args; }; int main() try { throw exception_t("{}", 42); } catch (std::exception& e) { std::println("{}", e.what()); } 在使用 SDK 10.0.19041.0 的 MSVC 2022 v143 下调试此问题时,我发现在构建 exception_t 期间,m_format_args 有一个适当的值,但在调用 What() 时,m_format_args 有一个无效值。这很可能是一生的问题,但我看不出出了什么问题。 (大多数情况下这个程序不打印 42) 我在这里做错了什么? ====================================================== HolyBlackCat回复后更新 上面是一个最小的代码片段,但其目的是将格式与异常/错误/警告报告完全分开。我想存储带有参数的标准类型,例如在磁盘上。随后另一个进程从磁盘读取数据并使用本地语言的格式字符串显示数据。这就是为什么我不想在此代码片段的构造函数中调用 std::vformat 的原因。 是否存在 std::format_args 的替代方案?例如。我可以存储参数吗? 我找到了一种存储参数并使程序运行的方法。我需要添加类型variant_t和variants_t并定义用户定义的格式化程序。那么上面的代码片段只需要一些小改动: #include <print> #include <exception> #include <string> #include <format> class exception_t : public std::exception { public: template<class... args_t> exception_t(std::string_view users_fmt, args_t&&... args) : m_users_fmt(users_fmt) , m_variants(std::move(args...)) {} char const* what() const noexcept override { m_variants.resize(16, 0); thread_local static std::string s = std::vformat(m_users_fmt, std::make_format_args(m_variants[0], m_variants[1], m_variants[2], m_variants[3], m_variants[4], m_variants[5], m_variants[6], m_variants[7], m_variants[8], m_variants[9], m_variants[10], m_variants[11], m_variants[12], m_variants[13], m_variants[14], m_variants[15])); return s.c_str(); } private: std::string m_users_fmt; mutable variants_t m_variants; }; int main() try { throw exception_t("{}", 42); } catch (std::exception& e) { std::println("{}", e.what()); } 这并不完全理想: 参数数量限制为16个 what() 不再是可重入的(您对 const 函数的期望) variant_t、variants_t 和用户定义格式化程序的定义如下: #include <variant> #include <vector> using variant_t = std::variant < bool , char , int , unsigned int , long long , unsigned long long , float , double , long double , void const* >; // helper type for the visitor #4 template<class... Ts> struct overloaded : Ts... { using Ts::operator()...; }; template<> struct std::formatter<variant_t, char> { template<class parse_context_t> constexpr parse_context_t::iterator parse(parse_context_t& ctx) { for(auto it = ctx.begin(); it != ctx.end(); ++it) { m_format += *it; if (*it == '}') { return it; } } m_format += '}'; return ctx.end(); } template<class fmt_context_t> fmt_context_t::iterator format(variant_t const& variant, fmt_context_t& ctx) const { return std::visit(overloaded{ [&ctx, this](bool v) { return std::vformat_to(ctx.out(), m_format, std::make_format_args(v)); }, [&ctx, this](char v) { return std::vformat_to(ctx.out(), m_format, std::make_format_args(v)); }, [&ctx, this](int v) { return std::vformat_to(ctx.out(), m_format, std::make_format_args(v)); }, [&ctx, this](unsigned int v) { return std::vformat_to(ctx.out(), m_format, std::make_format_args(v)); }, [&ctx, this](long long v) { return std::vformat_to(ctx.out(), m_format, std::make_format_args(v)); }, [&ctx, this](unsigned long long v) { return std::vformat_to(ctx.out(), m_format, std::make_format_args(v)); }, [&ctx, this](float v) { return std::vformat_to(ctx.out(), m_format, std::make_format_args(v)); }, [&ctx, this](double v) { return std::vformat_to(ctx.out(), m_format, std::make_format_args(v)); }, [&ctx, this](long double v) { return std::vformat_to(ctx.out(), m_format, std::make_format_args(v)); }, [&ctx, this](void const* v) { return std::vformat_to(ctx.out(), m_format, std::make_format_args(v)); }, }, variant); } std::string m_format{"{:"}; }; class variants_t : public std::vector<variant_t> { public: variants_t() = default; template<class... args_t, class T> variants_t(args_t&&... args, T last_arg) { *this = std::move(variants_t(args...)); push_back(last_arg); } };

回答 1 投票 0

Excel - 如果剪贴板包含文本或范围,则无需格式化即可进行 ctrl-v 粘贴

我有一个 Excel 文档,其条件格式相当复杂。用户组不熟悉电子表格,主要使用它们作为在表格中排列文本的方式,所以我无法重新...

回答 1 投票 0

显示八进制值作为其字符串表示形式

我在将八进制数转换为字符串时遇到问题。 p = 01212 k = str(p) 打印 k 结果是 650,但我需要 01212。我该怎么做?预先感谢。

回答 3 投票 0

这是在 PHP 中获取一天结束时间的正确方法吗?

我的一天结束是这样的: 函数 endofday($date_to_change) { $date_to_change = 日期('年月日'); $date_to_change = date('Y-m-d H:i:s', strtotime("+23 小时 59 分 59 秒",

回答 6 投票 0

我需要为 Salesforce APEX 代码构建新配方

我需要为 Salesforce APEX 代码构建新的配方,我开始使用 Java 模式,但我注意到 openrewrite 已经扫描并需要创建配方。如果我通过了一门课,它应该给我...

回答 1 投票 0

fmt.Sprintf 传递参数数组

抱歉问了这个基本问题。我想将切片作为参数传递给 fmt.Sprintf。像这样的东西: 值 := []string{"foo", "bar", "baz"} 结果 := fmt.Sprintf("%s%s%s", 值...) 还有

回答 5 投票 0

MS Access (office 365) 链接到 SQL Server 的表为我提供了日期字段,并将年份附加到年份

MS Access 正在将 SQL Server 日期格式“2023-01-01”转换为 01.01.20231 或将“2023-02-28”改为 28.02.202359。 附加的数字是一年中的第几天。大家有什么想法吗...

回答 1 投票 0

如何在堆栈溢出的注释部分发布代码片段

我要在评论区评论一段代码。假设有 10 行代码。我如何以正确的格式对其进行评论。请告诉我诀窍。预先感谢

回答 1 投票 0

pandas 数据读取器的正确日期格式?

有人可以解释一下如何为 pandas datareader 输入正确的日期格式吗?看来我过去已经尝试过这两种日期格式并且它们都有效。然而,最近几天...

回答 2 投票 0

如何将单元格中 16 位数字(信用卡)号码格式化为 4 组

我有一列信用卡号码,其中每个数字都以字符串形式明确输入:4805123412344564。现在我希望它们以按四分组的数字显示。所以我分配数字格式...

回答 3 投票 0

带分组数字的格式

我有一列信用卡号码,其中每个数字都以字符串形式明确输入:4805123412344564。现在我希望它们以按四分组的数字显示。所以我分配数字格式...

回答 2 投票 0

如何使用 scanf() 从输入中读取内容直到找到换行符?

我被要求用 C 语言做一项工作,我应该从输入中读取数据,直到出现空格,然后直到用户按下 Enter 键。 如果我这样做: scanf("%2000s %2000s", a, b); 它将跟随第一个...

回答 8 投票 0

如何将使用 rhandsontable 呈现的表值格式化为百分比,同时保留并显示完整的小数精度?

下面的 R Shiny 代码使用 rhandsontable 包,通过函数 row_decimals() 保留完整的小数精度。作为下一步,我尝试将这些值显示为百分比,同时保留 f...

回答 2 投票 0

使用格式防止 HTML 属性包装

“我在代码格式化方面遇到问题,当我格式化代码时,HTML 标签的属性被换行。这使得读取 HTML 标签变得困难。有没有办法

回答 1 投票 0

使用原始字符串文字的 C++ 格式

您可以将 C++20 format() 与原始字符串文字一起使用吗? gcc 14 返回错误消息。 #包括 #包括 #包括 使用命名空间 std; int main(){ ...

回答 1 投票 0

Java 格式和 checkstyle 标准

我知道两个主要的格式标准 https://www.cs.cornell.edu/courses/JavaAndDS/JavaStyle.html(Java) https://google.github.io/styleguide/javaguide.html(谷歌) 我想读一份报告,我如何...

回答 1 投票 0

Python Pandas DataFrame format() 不更新 df 值

尝试更新包含浮点数或字符串的列的格式时,列值仅更新某些输入文件,而不更新其他文件。 这是代码: 尝试: 打印('{:.2e}'.

回答 1 投票 0

如何使用批处理根据 Windows 区域设置格式化日期?

我有一个可以比较日期的批处理文件。问题是我们需要在不同的设置中测试它,不同的语言意味着不同的日期格式。 例如获取 Test.log 文件的修改日期(不是

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.