其他分享
首页 > 其他分享> > c – setw没有按预期工作

c – setw没有按预期工作

作者:互联网

我正在尝试以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.你能看到它有什么问题吗?

解决方法:

宽度是一种特殊的格式设置:当所有其他格式化标志都粘住时,宽度()将由每个输出操作符重置(好吧,你可以使用用户定义的输出操作符,它不会重置宽度()但是这样做不会遵循正常的风格).也就是说,您需要在应该受影响的输出之前设置宽度:

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

标签:c,setw
来源: https://codeday.me/bug/20190823/1695853.html