2D数组中的toString函数

问题描述 投票:0回答:1

非常抱歉,如果时间太长-昨天我发布了一个有关我要编写的游戏程序的问题,在一些人的帮助下,我很快就弄清了所有问题。

程序的绝大多数已经完成,但是我还有最后一个奇怪的任务要完成。我编写了一个函数printGrid,该函数从char数组中的每16个字符束中打印一个随机元素。例如(非常难看-请原谅我的初学者代码):

        char gameZero[outer_size][inner_size] = {
    {'A','A','C','I','O','T'}, {'A','H','M','O','R','S'},  

    {'E','G','K','L','U','Y'}, {'A','B','I','L','T','Y'}, {'A','C','D','E','M','P'},   
     {'E','G','I','N','T','V'}, {'G','I','L','R','U','W'}, {'E','L','P','S','T','U'},  
     {'D','E','N','O','S','W'}, {'A','C','E','L','R','S'}, {'A','B','J','M','O','Q'},  
     {'E','E','F','H','I','Y'}, {'E','H','I','N','P','S'}, {'D','K','N','O','T','U'},  
 {'A','D','E','N','V','Z'}, {'B','I','F','O','R','X'}  
     };  
    void printGrid() {
mt19937 gen(time(nullptr));
uniform_int_distribution<int> random_inner(0, inner_size - 1);
int n = random_inner(gen);

cout << "+---+---+---+---+\n";
for (int i = 0; i < 4; i++)
    cout << "| " << gameZero[i][n] << " ";
cout << "\n+---+---+---+---+\n";
for (int i = 4; i < 8; i++)
    cout << "| " << gameZero[i][n] << " ";
cout << "\n+---+---+---+---+\n";
for (int i = 8; i < 12; i++)
    cout << "| " << gameZero[i][n] << " ";
cout << "\n+---+---+---+---+\n";
for (int i = 12; i < 16; i++)
    cout << "| " << gameZero[i][n] << " ";
cout << "\n+---+---+---+---+\n";

}

这将打印一个4x4游戏板,供用户查看。我现在正在尝试编写一种toString函数,该函数采用在printGrid中生成的随机数并将它们打印到没有空格的单行字符串中。我想解决的问题是,我有各种各样的角色,每次玩家开始新游戏时,角色都会改变。这16个字符来自16个骰子的固定数组,每个数组包含6个字符。是唯一可行的方法来将这些新随机选择的字符存储到一个空数组中,以便用户在需要时可以使用toString函数简单地打印它们吗?然后我要解决的另一个障碍是,每次用户想要再次开始时都删除该数组。如果是这种情况,我可以将它们存储在向量中并使用诸如vector :: clear之类的方法来解决吗?

printGrid函数的当前输出:

 +---+---+---+---+
 | T | M | E | L |
 +---+---+---+---+
 | A | V | L | S |
 +---+---+---+---+
 | E | A | Qu| F |
 +---+---+---+---+
 | E | D | N | O |
 +---+---+---+---+

我想创建的toString函数的所需输出:

 TMELAVLSEAQuFEDNO

非常抱歉,如果阅读太多或感到困惑-我几乎整天都在做这件事,此刻我的大脑有点发呆了。任何提示,不胜感激!

c++ arrays string vector tostring
1个回答
0
投票

您具有选择字符的逻辑,例如:

for (int i = 0; i < 4; i++)
    cout << "| " << gameZero[i][n] << " ";

您可以使用std::string和运算符+=将字符附加到字符串:std :: string all_letters;

for (int i = 0; i < 4; ++i)
{
  all_letters += gameZero[i][n];
}

编辑1:扩展循环由于不需要按行打印,因此可以遍历整个数组:

std::string all_letters;

for (int i = 0; i < 16; ++i)
{
    all_letters += gameZero[i][n];
}
© www.soinside.com 2019 - 2024. All rights reserved.