首页
学习
活动
专区
圈层
工具
发布

cpp格式
EN

Stack Overflow用户
提问于 2016-01-10 15:15:58
回答 1查看 86关注 0票数 0

在我的程序中,有一些代码会产生与我们想要的结果相反的结果。

我必须打印关于许多条目的时间(预期和计划)。我需要每个时间参数被打印在与前一个相同的位置。同样,当给定的时间是8:30时,需要翻译成08:30。

到目前为止这是我的密码。(重载的<<操作符与我的类一起工作,out是ostream,l是对类对象的引用)

代码语言:javascript
复制
if(l.get_hour() < 10 || l.get_minute() < 10)
{
    if(!(l.get_minute() < 10) && l.get_hour() < 10)
    {
        out << "0" << l.get_hour() << ":" << l.get_minute();
    }
    else if(l.get_minute() < 10 && !(l.get_hour() < 10))
        out << l.get_hour() << ":" << "0" << l.get_minute();
    else if(l.get_minute() < 10 && l.get_hour() < 10)
        out << "0" << l.get_hour() << ":" << "0" << l.get_minute();
}
else
    out << l.get_hour() << ":" << l.get_minute();
return out;

在打印格式化输出之前,一切都正常。

代码语言:javascript
复制
cout << right << setw(5) << entry[0].get_expected() << setw(5) << entry[0].get_scheduled() << endl;
cout << right << setw(5) << entry[9].get_expected() << setw(5) << entry[9].get_scheduled() << endl;

其中打印后产生的时间数据具有一定的错位性。

所以,我的问题是,这是从哪里来的,如何解决呢?

输出如下

代码语言:javascript
复制
14:45 15:50
 08:50  09:20
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-10 15:24:32

我猜首先有几个空间,然后是输出的其余部分?这是因为setw操作器只对流的下一个输出工作。

您实际上不需要设置字段宽度,因为您将始终打印出五个字符(如果重载的函数按其应有的方式工作)。

或者,您可以将时间格式化为ostringstream,并使用该字符串对实际输出流执行单个输出。

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

https://stackoverflow.com/questions/34707037

复制
相关文章

相似问题

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