C ++在没有逗号的情况下读取用户输入

时间:2013-01-22 19:03:24

标签: c++ validation input user-input

我正在为我的C ++课做一个家庭作业,以制作一个多玩家Tic-tac-toe游戏,但是我遇到了程序输入部分的问题(我几乎所有其他的都在运行)。

无论如何,我的目标是提示当前玩家获取格式row,col中的行和列。然后我需要将他们的标记放在代表游戏板的二维数组中。

我认为我可以简单地使用cin将其输入读入char数组,然后在该数组中取0位置和2位置,我将从输入中得到两个数字。但是,如果我这样做,我最终会得到输入的ASCII值,而不是数字(例如,我得到49而不是'1')。

我觉得我可能忽略了一些非常简单的东西,所以任何输入都会非常有用并且非常感激。这就是我所拥有的:

void getEntry(char XorO, char gameBoard[GRID_SIZE][GRID_SIZE])
{
    char entry[3];

    cout << XorO << " - enter row,col: ";
    cin >> entry;

    int row = entry[0];
    int col = entry[2];

    //Then I would use the row, col to pass the XorO value into the gameBoard
}

4 个答案:

答案 0 :(得分:2)

要获得号码

row = entry[0] - '0';
col = entry[2] - '0';

这将从ASCII转换为实际数字。

答案 1 :(得分:1)

请注意,您正在阅读char数组。将单个char转换为int时,您将获得字符'0''1''2'的ASCII(或Unicode)值,而不是整数值012。要转换单个数字,您可以使用ASCII代码的有用属性:数字字符是顺序的。这意味着您可以从任何数字中删除'0'的代码以获取相应的整数值。例如

row = entry[0] - '0';

答案 2 :(得分:1)

operator>>处理解释数字:

void getEntry(char XorO, char gameBoard[GRID_SIZE][GRID_SIZE])
{
    int row, col;
    char comma;

    cout << XorO << " - enter row,col: ";
    std::cin >> row >> comma >> col; 

    if( (!std::cin) || (comma != ',') ) {
      std::cout << "Bogus input\n";
      return;
    }

    //Then I would use the row, col to pass the XorO value into the gameBoard
}

答案 3 :(得分:0)

void getEntry(char XorO, char gameBoard[GRID_SIZE][GRID_SIZE])
{
    char entry[3];

    cout << XorO << " - enter row,col: ";
    cin >> entry;

    int row = entry[0] - '0';
    int col = entry[2] - '0';

    //if grid_size <= 9
}