C++ 对齐字符以与实现的任何输入一起整齐地显示

C++ aligning characters to display neatly with any input implemented

我无法使“:”和“$”与用户通过 "numTShirts" 的 cin 命令实现的任何输入对齐。如果实施 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;

发生这种情况是因为折扣金额是可变的,并且 space 会相应增加。

正如您在示例中显示的那样,当折扣为一位数时,对齐就是所需的数字,否则就不一样了。

由于discoutn最多可以是三位数(100%),所以我建议你们两个对输出进行三种格式化。

一个为 1 位数折扣,2 位数和 3 位数。 通过使用条件语句,您可以在输出中显示相应的内容。