2017-04-18 68 views
0

我想输出一个时间表,但我很难得到它视觉上组织。格式输出C++与setw

在第一行我想打印3个字符串。 第二次我想打印相关小时。

int main() 
{ 
    string day1 = "Monday"; 
    string day2 = "Tuesday"; 
    string day3 = "Wednesday"; 

    cout << setw(10) << day1 << setw(10) << day2 << setw(10) << day3 << endl; 

    int hour1 = 8; 
    int hour2 = 9; 
    int hour3 = 10; 

    int min1 = 05; 
    int min2 = 20; 
    int min3 = 30; 

    cout << setw(10) << hour1 << ":" << min1 << setw(10) << hour2 << ":" << min2 << setw(10) << hour3 << ":" << min3 << endl; 
    return 1; 
} 

这并没有在视觉上满足。 “05”min也有问题。

它类似于下面的图片。

我该如何解决问题?

谢谢

Screenshot

+0

将所需的输出发布为_text_。坦率地说,这看起来像是一个“为我而做”的职位?什么是“麻烦”?你能把它缩小到一个特定的问题吗? –

+0

@BoundaryImposition绝对不是为我做的。我刚刚创建了这个例子,所以人们不必浪费时间去浏览我现在拥有的更复杂的代码。问题是我有2个变量,我想把它们放在一起。如果只是一个字符串,使用setw会很容易,因为一切都会对齐。但是当你有超过1个变量时,它们是如何工作的? 我该如何打印05而不是5? –

+1

@ N.Car:关于打印“05”,在设置宽度之前,用零填充它,如下所示:setfill('0')<< setw(2)<< min1。这应该为min1变量输出“05”。如果宽度设置为大于2的值,则实际值之前的所有空白都将填充0。 – BuddhaLight

回答

0

你的第二个setw(10)只适用于它之后而来的东西,在这种情况下是hour1。如果你想让它看起来不错,你可以调整你的setw()
类似于:cout << setw(7) << hour1 << ":" << setw(2) << min1

+0

谢谢,我现在明白了! 最后一件事,你知道如何添加05?当我想打印05时,它只显示5 –

+0

您可以在号码前面使用'setfill('0')'。像'setfill('0')'min1'。接受赞赏:) –

+0

谢谢,虽然我必须使用setfill(''),所以它不会影响剩余的空间。 :) –