C++用单位数和双位数排列间距

C++ Lining up spacing with single and double digits

本文关键字:排列 单位 C++      更新时间:2023-10-16

我正在编写一个洗牌程序。我开始工作了,我想在洗牌前和洗牌后展示牌。我在处理数字10时遇到了间距问题。

我知道我可以使用"t",但还有其他方法吗。

输出片段:

A of Spades
2 of Spades
3 of Spades
4 of Spades
5 of Spades
6 of Spades
7 of Spades
8 of Spades
9 of Spades
10 of Spades
J of Spades
Q of Spades
K of Spades

我几乎可以肯定是assignDeck()导致了这个问题,但我将同时包括这两个问题。

void assignDeck(string *suit, string *cards, string *deck)
{
    int p=0;
    for(int i=0; i<4; i++)
    {
        for(int j=0; j<13; j++)
        {       
          deck[p] = cards[j]  + " of " +  suit[i];
          p++;
        }
    }
}
void showDeck(string *deck)
{
    for (int i=0; i<52; i++)
    {
      cout<<deck[i]<<endl;
    }
}

由于您将整行输出为一个字符串,因此您可以在将其添加到牌组的同时修改卡串。

void assignDeck(string *suit, string *cards, string *deck)
{
    int p=0;
    for(int i=0; i<4; i++)
    {
        for(int j=0; j<13; j++)
        {   
          if ( cards[j].size() < 2 )
            cards[j] = " " + cards[j];
          deck[p] = cards[j]  + " of " +  suit[i];
          p++;
        }
    }
}

编辑:这只是为了让您对代码的更改最小。对于一般情况,我建议您在<iomanip>标头中使用std::setw函数。

是的,您可以直接使用C++流和

 <iomanip>

使用setwidth()和setfill()等

看看Jossutis的例子:

http://books.google.co.uk/books?id=n9VEG2Gp5pkC&pg=PA618&lpg=PA618&dq=josuttis+setwidth&source=bl&ots=Rem8pr98PT&sig=gxyrv39njxNvB1l8fyeLfCMMVfE&hl=en&sa=X&ei=eU6nOqPdM4jE7Abp5IGgDA&ved=0CDIQ6AEwAA#v=一页&q=josuttis%20setwidth&f=错误