"禁止不"用户输入2个字符

时间:2016-10-11 17:57:56

标签: c++ arrays

这是我在这里的第一个问题,我希望我能够具体到足够的......

问题是,我正在用C ++编写Tic Tac Toe游戏,而且我遇到了一些问题..

设置如下:

1 2 3

4 5 6

7 8 9

输入X位置://用户输入 - 1-9

中的数字

它是一个二维 char 数组(它是char的原因是因为我最终需要用X或O替换所有字符。)

我可以让它发挥作用,那就是......当我要求玩家X或玩家O为他们的位置输入一个数字时,它会变成X或O. 我有一个if语句,如果用户输入的数字不是1-9之间的数字,则会向用户显示错误,并且除了一个小问题外它可以工作..

如果玩家X进入,例如" 23",我的阵列中的2和3都变为X,这不应该发生:

1 2 3

4 5 6

7 8 9

输入X位置:23

1 X 3

4 5 6

7 8 9

1 X X

4 5 6

7 8 9

有什么方法可以让我的错误if语句输入两个或更多字符?

提前致谢。

2 个答案:

答案 0 :(得分:0)

我相信你可以使用std :: getline

达到你想要的效果

文档http://www.cplusplus.com/reference/string/string/getline/

有了这个,你可以检查返回的字符串的长度是否大于1,以进入你的错误if-else。

然后将其更改为数字,您可以在进行一些验证后使用atoi,这是一个实际数字。 (在纯c ++中,您可以使用stringstream转换为数字http://www.cplusplus.com/reference/sstream/stringstream/

答案 1 :(得分:0)

你说过,你有一个二维char数组。 我将制作一个简单的一维字符数组,包含9个字段(从0到8)。 当你向玩家询问一个位置(1-9)时,你让他们输入一个int值,并将数字-1的数组字段设置为相应的符号。

类似的东西:

    char arr[9];
    //set all positions to numbers
    int i=10;
    std::cout<<"Player X, enter position!" << endl;
    cin >> i;
    i=i-1;
    if(i<0 || i>8) {
    //error
    }
    arr[i]='x';
相关问题