【发布时间】:2021-12-02 09:31:53
【问题描述】:
我正在用 C++ 制作一个二十一点游戏,我试图打印出玩家和庄家牌以及他们的金额、资本等。但是,在打印出卡片矢量时,我遇到了std::setw() 的问题。这是一个代码sn-p:
int width = 18;
std::cout << std::left << std::setw(width) << "Your cards:";
std::cout << std::left << std::setw(width * 2) << "arr";
std::cout << std::left << std::setw(width) << "Dealers cards:";
std::cout << "arr2" << std::endl;
std::cout << std::left << std::setw(width) << "Your sum:";
std::cout << std::left << std::setw(width*2) << player.sum();
std::cout << std::left << std::setw(width) << "Dealers sum:";
std::cout << dealer.sum() << std::endl;
arr 和arr2 应该有像5 2 6 1 这样的数字值,但如果我分别打印每个元素,则 with 对齐会中断。我认为setw() 要工作,它需要是一个块或字符串,否则一旦值发生变化,垂直对齐就会混乱。我为每个向量值尝试了myString.push_back(),然后打印了它,但没有运气。我假设我需要找到一种方法将字符串打印到一个元素中。
它应该是这样的:
Your cards: 5 7 1 2 Dealers cards: 2 1 7 5
Your sum: 21 Dealers sum: 21
Your capital: 100 Dealers capital: 100
【问题讨论】:
-
两列之间的空格是否正好是空格数有关系吗?您只能在打印数组中的最后一个数字时应用
std::setw。 -
没关系,但接下来的问题是宽度数应该是多少 - 请记住,数组可以跨越 2 - 6 个或更多数字。重要的是柱子是直的。