C++ 计算字符数组中的数字数量

c++ count amount of numbers in char array?

本文关键字:数字 计算 字符 数组 C++      更新时间:2023-10-16

我有一个字符数组,其中的数字为 0-8

,以字符形式存在
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"的字符,但我无法弄清楚如何让它发送多少剩余的整数值。这是我所得到的。

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

试试

auto n = std::count_if(Board, Board+9, std::isdigit);

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

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

您可以使用std::isdigitstd::count_if的组合

#include <cctype>    // for std::isdigit
#include <algorithm> // for std::count_if
int num = std::count_if(Board, Board+9, std::isdigit);

假设您不仅想要任何数字,并且只想要 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;