首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >setw未按预期工作

setw未按预期工作
EN

Stack Overflow用户
提问于 2013-09-26 20:28:49
回答 2查看 5.1K关注 0票数 5

我试图以hh:mm格式打印时间,但当时间为01:01时,它将打印为1:1。

代码语言:javascript
复制
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";
    }
}

据我所知,这个应该可以工作。包括我自己。你能看出它有什么问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-26 20:37:13

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

代码语言:javascript
复制
std::cout << std::setfill('0')
          << std::setw(2) << hour << ':'
          << std::setw(2) << min << ' ';
票数 8
EN

Stack Overflow用户

发布于 2013-09-26 20:32:04

以下是正确的方法:

代码语言:javascript
复制
 cout<<""The time is: ";
 cout << setfill('0') <<setw(2) << hour << ":" <<setw(2) << min << " ";

参考文献:-

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19038082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档