5

我正在尝试以 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";
    }
}

据我了解,这应该有效。我包括 iomanip。你能看出它有什么问题吗?

4

2 回答 2

8

宽度是一个特殊的格式设置:虽然所有其他格式标志都是固定的,但width()每个输出运算符都会重置 (好吧,您可以拥有不重置width()但不会遵循正常样式的用户定义的输出运算符)。也就是说,您需要在应该受到影响的输出之前立即设置宽度:

std::cout << std::setfill('0')
          << std::setw(2) << hour << ':'
          << std::setw(2) << min << ' ';
于 2013-09-26T20:37:13.597 回答
2

以下是正确的方法:

 cout<<""The time is: ";
 cout << setfill('0') <<setw(2) << hour << ":" <<setw(2) << min << " ";

参考:-这个

于 2013-09-26T20:32:04.703 回答