如何将 std::setw() 与数组输出一起使用?
How can you use std::setw() with array output?
我正在用 C++ 制作一个 21 点游戏,我试图打印出玩家和庄家的牌以及他们的总和、资本等。但是,在打印卡片矢量时,我 运行 遇到了 std::setw()
的问题。这是一个代码片段:
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
这样的数字值,但是如果我分别打印每个元素,则对齐会中断。我认为 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
我找到了解决办法。您可以使用 stringstream 将 int 值添加到字符串而不会出现转换错误,这就是我修复代码的方式:
#include <sstream>
std::stringstream playerCards{};
for (int i{}; i < player.cards.size(); i++) {
playerCards << player.cards[i] << " ";
}
int width = 18;
std::cout << std::left << std::setw(width) << "Your cards:";
std::cout << std::left << std::setw(width * 2) << playerCards.str();
这样数组将被放入一个字符串中并计为一个块,这正是我一直在寻找的。
我正在用 C++ 制作一个 21 点游戏,我试图打印出玩家和庄家的牌以及他们的总和、资本等。但是,在打印卡片矢量时,我 运行 遇到了 std::setw()
的问题。这是一个代码片段:
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
这样的数字值,但是如果我分别打印每个元素,则对齐会中断。我认为 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
我找到了解决办法。您可以使用 stringstream 将 int 值添加到字符串而不会出现转换错误,这就是我修复代码的方式:
#include <sstream>
std::stringstream playerCards{};
for (int i{}; i < player.cards.size(); i++) {
playerCards << player.cards[i] << " ";
}
int width = 18;
std::cout << std::left << std::setw(width) << "Your cards:";
std::cout << std::left << std::setw(width * 2) << playerCards.str();
这样数组将被放入一个字符串中并计为一个块,这正是我一直在寻找的。