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

标签 c++ setw

我无法使“:”和“$”与用户通过 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;

enter image description here enter image description here

最佳答案

之所以发生这种情况,是因为折扣金额是可变的,并且空间会根据它增加。

如您在示例中所示,当折扣为一位数时,对齐就是所需的数字,否则它是不同的。

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

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

关于C++ 对齐字符以与实现的任何输入一起整齐地显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46842150/

相关文章:

c++ - 如何使用 X11 避免图形绘图中的闪烁

c++ - opengl中如何使用子窗口

c++ - STL find 函数从 deque 返回什么

c++ - 为什么 setw(n) 在这里不起作用?

c++ - std::setw() 在我的数组末尾插入 a\0

c++ - 为什么我无法检查堆栈中的内容?

c++ - 在 C++ 中向现有 txt 文件添加新行

C++可以setw和setfill填充字符串的末尾吗?

使用 setw(x) 而不是 put_money 对齐小数点的 C++ cout 列表

c++ - setw 和重音字符