gpt4 book ai didi

c++ - 从根本上误解了 alignment 和 setw?

转载 作者:行者123 更新时间:2023-11-27 23:48:03 25 4
gpt4 key购买 nike

我现在在谷歌搜索 2 小时后问这个问题。正如标题所说,我想我误解了如何使用上面的两件事。我正在尝试创建两个不同的列来显示输出并且彼此一致。然而,无论我做什么,他们似乎都不会排队。

我的代码如下

#include <iostream>
#include <string>
#include <iomanip>

using namespace std;

int main()
{
const double THEATHERCUT = .80;
const double DISTRIBUTORCUT = .20;
const int CHILDCOST = 6;
const int ADULTCOST = 10;

string movieName;

int childTickets, adultTickets, childGrossRevenue, adultGrossRevenue, totalGrossRevenue, distributorRevenue, totalNetRevenue;

//User Input
cout << "What movie was viewed?" << endl;
getline(cin, movieName);
cout << "How many adult tickets were sold?" << endl;
cin >> adultTickets;
cout << "How many child tickets were sold?" << endl;
cin >> childTickets;

// Maths

childGrossRevenue = (CHILDCOST * childTickets);
adultGrossRevenue = (ADULTCOST * adultTickets);

totalGrossRevenue = (childGrossRevenue + adultGrossRevenue);
distributorRevenue = (totalGrossRevenue * .20);
totalNetRevenue = (totalGrossRevenue * .80);

cout << left << "Movie Name:" << setw(20) << right << movieName << endl;
cout << left << "Adult Tickets Sold:" << setw(20) << right << adultTickets << endl;
cout << left << "Child Tickets Sold:" << setw(20) << right << childTickets << endl;
cout << left << "Gross Box Office Revenue:" << setw(20) << right << totalGrossRevenue << endl;
cout << left << "Amount Paid to Distributor:" << setw(20) << right << distributorRevenue << endl;
cout << left << "Net Box Office Revenue:" << setw(20) << right << totalNetRevenue << endl;

system("pause");

return 0;
}

据我所知,第一行 cout 应该执行以下操作:

将“电影名称:”左对齐,setw(20) 在“电影名称:”和电影名称之间设置 20 个空格。 right 然后将 movieName 向右对齐。它是否正确?只是为了澄清,这就是我想要的样子。

Example

(我也很清楚使用 system("pause") 是一种亵渎神灵的行为,在任何人提及它之前。)

最佳答案

setw(20) set a 20 space padding between the "Movie Name:" and movieName. right then justifies movieName to the right. Is this correct?

没有。

setw(20) 将下一个“字段”设置为 20 个字符宽,如果字段较短则触发插入额外的空格(导致输出中的“对齐”效果后续字段)。

这必须在插入字段之前进行,否则会出现时间悖论。

您要填充的字段是“电影名称:”部分,因此将您的 setw 向左移动一个。

leftright 对齐 within 一个字段,这似乎不是您想要的,所以删除 right

( live demo *)

* 我已经取消了两个未使用的变量,修复了缩进,删除了亵渎神明的内容(我真的不得不这样做,否则这个演示将无法运行 — 邪恶的!),并增加了间距(自 20实际上不足以容纳所有行中的第 1 列)。否则只能按照上面的建议进行更改。

关于c++ - 从根本上误解了 alignment 和 setw?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48980023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com