0

这可能会相当简单,但解决方案目前正在躲避我。这是该程序的简要介绍。

该程序显示并允许用户洗牌,然后在用户输入时以洗牌的形式再次显示它们。目前我的输出只有一行,直到它强迫自己从超过窗口大小开始换行。

我需要做的是创建 4 行 13 张卡片的单独行,我在伪代码中的方式是:

if(deck[12])
   cout << endl;

但是,我无法让它访问迭代器的元素,以便它可以在显示 13 张卡片后结束该行。这是显示卡片的 for 循环:

for (vector<const string*>::const_iterator it=deck.begin(); it!= deck.end(); ++it)
            {
                cout << (*it)->c_str() << ' ';
            }
4

3 回答 3

2

单独的柜台怎么样?

int n = 0;
for (vector<const string*>::const_iterator it=deck.begin(); it!= deck.end(); ++it)
{
    cout << (*it)->c_str() << ' ';
    if (++n == 13)
    {
        n = 0;
        cout << '\n';
    }
}
于 2013-08-17T12:43:45.157 回答
2

你可以做这样的事情 -

 if ((it - deck.begin()) % 13 == 0)
 {
     std::cout << "\n";
 }
于 2013-08-17T12:45:11.383 回答
0

您有 52 张卡片,并希望以 4 行显示它们,每行 13 张卡片。这很容易:

for (int line = 0; i < 4; ++i) { for (int card = 0; card < 13; ++card) std::cout << *it++); std::cout << '\n'; }

whereit被初始化为指向牌组中的第一张牌。请注意,代码假定存储在卡座中的对象可以直接插入到 ostream 中。更改const string*string; 你会发现你的生活变得简单多了。

于 2013-08-17T13:48:55.413 回答