首页 > 解决方案 > 您可以使用 setfill() 设置填充 2 位数字吗?

问题描述

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

标签: c++dateformattingostreamiomanip

解决方案


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

对于时间格式,您可以使用put_time()格式字符串来指示所需的格式(例如Yfor2018yfor ),前提是您在结构 18中传递了一个真实日期(例如 2018 年) 。tm

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

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

但更好的方法是确保日期以 4 位数字输入(这将避免您未来 2100 年的错误),或者使用一些功能来做到这一点,这样——如果需要的话——你的未来可以很容易地找到代码中的微妙位置。


推荐阅读