我正在尝试以hh:mm格式打印时间,但当时间如01:01时,它打印为1:1.这是我的代码:
void output(int hour, int min, char ampm){
cout << setw(2) << setfill('0') << "The time is: " << hour << ":" << min << " ";
if(ampm == 'P'){
cout << "PM";
}
else if (ampm == 'A'){
cout << "AM";
}
}
Run Code Online (Sandbox Code Playgroud)
据我了解,这应该工作.我包括iomanip.你能看到它有什么问题吗?
宽度是一种特殊的格式设置:虽然所有其他格式化标记都是粘滞的,但是width()每个输出操作符都会重置(好吧,你可以使用用户定义的输出操作符,它们不会重置width()但是这样做不会遵循正常的样式).也就是说,您需要在应该受影响的输出之前设置宽度:
std::cout << std::setfill('0')
<< std::setw(2) << hour << ':'
<< std::setw(2) << min << ' ';
Run Code Online (Sandbox Code Playgroud)