c ++计算char数组中的数字量?

时间:2012-12-10 20:09:39

标签: c++ char

我有一个char数组,其中以char形式显示数字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'的字符但是我无法弄清楚如何让它发送有多少留给int值。这就是我的意思。

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

        }
    }

4 个答案:

答案 0 :(得分:2)

你可以尝试

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

答案 1 :(得分: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

答案 2 :(得分:1)

您可以使用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);

答案 3 :(得分: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;