2013-09-26 15 views
2

我想在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

宽度是一个特殊格式的设置:当所有其他格式化标志是棒,width()将每个输出操作人员重置(好了,你可以有用户定义的输出操作符不重置width(),但这样做会不会遵循正常的风格)。也就是说,您需要在应该受影响的输出之前立即设置宽度:

std::cout << std::setfill('0') 
      << std::setw(2) << hour << ':' 
      << std::setw(2) << min << ' '; 
1

以下是正确的做法:

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

参考: - this

+0

谢谢!我没有意识到它必须在变量之前。 – granra

相关问题