1

我有一个 char 数组,其中 0-8 为 char 形式

Board[0] = '0';
Board[1] = '1';
Board[2] = '2';
Board[3] = '3';
Board[4] = '4';
Board[5] = '5';
Board[6] = '6';
Board[7] = '7';
Board[8] = '8';

并且其中一些根据用户输入更改为“x”或“o”但是我需要找出一种方法,以便我可以告诉它们的总数不是“x”或“ o'。

我的意思是,如果说 9 个中有 4 个是“x”或“o”,我需要能够得到剩下 5 个的事实。我试图使用for each(char c in Board)并且我已经足够远到我得到它的地方列出不是'x'或'o'的字符,但我不知道如何让它发送剩下多少一个 int 值。这是我得到的。

    for each(char c in Board)
    {
        if (c != 'x' && c != 'o')
        {

        }
    }
4

4 回答 4

2

你可以试试

auto n = std::count_if(Board, Board+9, std::isdigit);
于 2012-12-10T20:12:24.020 回答
1

您应该定义一个计数器来计算这些字符的数量(通过增加它):

int n = 0;
for (char c : Board)
{
    if (c != 'x' && c != 'o')
    {
        n++; // increment n by 1
    }
}

std::cout << n << '\n'; // use the result
于 2012-12-10T20:12:15.340 回答
1

您可以使用std::isdigit和的组合std::count_if

#include <cctype>    // for std::isdigit
#include <algorithm> // for std::count_if

int num = std::count_if(Board, Board+9, std::isdigit);
于 2012-12-10T20:12:36.777 回答
0

假设您不仅想要任何数字,而且只有 0 到 8 之间的数字,您可以这样做:

int count = 0;

for each(char c in Board)
{
    if (c >= '0' && c <= '8')
    {
        count++;
    }
}

cout << count << " are digits between 0 and 8 (inclusive)" << endl;
于 2012-12-10T20:20:51.063 回答