【问题标题】:Can you use setfill() to set fill 2 digits?您可以使用 setfill() 设置填充 2 位数字吗?
【发布时间】:2019-03-14 13:47:41
【问题描述】:

如果我想在输入为 18 时显示 2018,如何让它显示 2018 中的“20”?我尝试使用 setfill("20") 并且它不起作用,因为它是一个字符串而不是一个字符。但是当我使用 setfill('2');它将显示 2218。

【问题讨论】:

  • 我认为没有标准的方法可以做到这一点。您可以编写一个函数来检查数字的字符串表示的长度,并在需要时附加“20”前缀。
  • 我想最简单的方法是std::cout << "20" << whatever_variable_holds_18 << '\n';

标签: c++ date formatting ostream iomanip


【解决方案1】:

格式化工具setfill() 旨在通过重复一个字符来填充空白空间。因此,使用字符串是不可能获得这种效果的。

对于时间格式,您可以使用带有格式字符串的put_time() 来指示所需的格式(例如,Y 用于2018y 用于18),前提是您有实际日期(即 2018 年)以 tm 结构传递。

在您的情况下,您可以尝试以下操作:

cout << (year<100 ? year:year+2000);   

但更好的方法是确保日期输入为 4 位数字(这将避免您未来 2100 年的错误),或者使用一些函数来执行此操作,以便 -- 如果需要 --你的未来你可以很容易地在你的代码中找到微妙的地方。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-19
    • 2021-12-19
    • 1970-01-01
    • 2022-01-23
    • 2016-02-23
    • 1970-01-01
    相关资源
    最近更新 更多