我无法使“:”和“$”与用户通过 cin 命令“numTSirts”实现的任何输入对齐。如果实现 10 次或以下,它会保持一致,但折扣会与任何其他输入不符。
![用 10 实现] http://prntscr.com/gzms3m
![与其他一起实现] http://prntscr.com/gzmsjx
cout << "\n" << endl;
cout << fixed;
cout << "Thank you for your purchase.\n" << endl;
cout << "You bought " << numTShirts << " T-shirts\n" << endl;
cout << "Subtotal Total" << setw(5) << ": $ " << right << setprecision(2) << subTotal << "\n" << endl;
cout << setprecision(0) << "Discount(" << discountPCT << "%)" << setw(7) << ": $ " << right << showpoint << setprecision(2) << discount << "\n" << endl;
cout << setfill('-') << setw(35) << "-\n" << endl;
cout << setfill(' ');
cout << "Total" << setw(14) << ": $ " << right << showpoint << setprecision(2) << totalPrice << endl;
最佳答案
之所以发生这种情况,是因为折扣金额是可变的,并且空间会根据它增加。
如您在示例中所示,当折扣为一位数时,对齐就是所需的数字,否则它是不同的。
由于discoutn 最多可以是三位数(100%),所以我建议你们两个对输出进行三种格式化。
一个为 1 位数折扣,2 位数和 3 位数。 通过使用条件语句,您可以在输出中显示相应的内容。
关于C++ 对齐字符以与实现的任何输入一起整齐地显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46842150/