【问题标题】:How to re-assign number values to a character array efficiently in C++如何在 C++ 中有效地将数值重新分配给字符数组
【发布时间】:2020-04-28 16:28:58
【问题描述】:

Okie dokie,这是我第一次在这里发帖,如果我的格式不是很好,请原谅我。 我目前正在上我的第二个 C++ 课程,我们的任务是使用一维数组创建一个井字游戏。我们的教授希望它的方式要求数组使用字符而不仅仅是整数。 我有我的游戏代码,但我希望能够在有人获胜或平局后玩新游戏。为了做到这一点,我需要摆脱现在存储在我的数组中的 X 和 O。 我的麻烦是试图创建一个循环来适当地重新分配字符值。

我对数组的概念完全陌生,至少可以说我的理解仍然很脆弱。如果我只是完全错过了可以简化这一点的东西,请帮帮我! 目前它只是打印出随机的 ascii 字符,因为它不知道这些数字应该被解释为字符。有任何想法吗? :)

更新:我找到了一种重新分配值的蛮力方法,但看起来必须有更好的方法。

// This is the initial board setup

char theBoard[SIZE] = {'0', '1', '2', '3', '4', '5', '6', '7', '8'};

// It is re-assigned values of 'X's and 'O's throughout the game
// By the end it looks more like : {X, O, X, O, O, X, X, X} if you can imagine

// My brute force method looks like this: 
void initializeBoard(char theBoard[], int SIZE)
{
    theBoard[0] = '0';
    theBoard[1] = '1';
    theBoard[2] = '2';
    theBoard[3] = '3';
    theBoard[4] = '4';
    theBoard[5] = '5';
    theBoard[6] = '6';
    theBoard[7] = '7';
    theBoard[8] = '8';
}

// And the for loop I was trying to use looked like this: 

void initializeBoard(char theBoard[], int SIZE)
{
    for(int i = 0; i < SIZE; i++)
        {
            theBoard[i] = i;
        }
}





【问题讨论】:

  • 如果你将你的问题描述为“试图创建一个循环来适当地重新分配字符值”,那么你为什么要用一个大程序来填充你的问题,其中 99% 没有任何东西与有问题的循环有关?这个问题的问题不是“格式不好”,而是它不符合minimal reproducible example 的“最低”要求。
  • 嗨,Sam,我刚收到一封来自 Stack Overflow 的电子邮件,其中包含他们的发帖建议。我很快意识到我在这里放了太多代码。我刚刚更新了它,所以希望这更直接和最小。 :)

标签: c++ arrays character


【解决方案1】:

在 C++ 中,0'0' 是两个不同的东西。一个是整数值0,一个是整数值48,正好和字符'0'的ASCII码一样。

您尝试编写的循环是:

void initializeBoard(char theBoard[], int SIZE)
{
    for(int i = 0; i < SIZE; i++)
        {
            theBoard[i] = '0' + i;
        }
}

【讨论】:

  • 附带说明,您也可以使用std::iota()
猜你喜欢
  • 1970-01-01
  • 2012-09-14
  • 2018-01-24
  • 2019-11-25
  • 1970-01-01
  • 2021-10-13
  • 2020-07-06
  • 1970-01-01
  • 2011-10-23
相关资源
最近更新 更多