c++ - 如何检索基于 char 数组的枚举索引值?在 C++ (cpp) 中

标签 c++ chess

免责声明:编程新手,即时学习。这是我的第一篇文章,如果问题没有写清楚,我们深表歉意。

我正在尝试完成有关构建国际象棋引擎的教程,但它是用 C 语言编写的,我正在尝试将其转换为 C++ 代码。代码的想法是输入一个字符并检索枚举的索引值。由于此代码,我收到编译错误。 我该如何解决这个问题,因为在尝试了不同的想法后我还不清楚。

例如std::cout << CHAR_TO_PIECE['k'];预期输出为 11。

"typedefs.h"

enum Piece {P, N, B, R, Q, K, p, n, b, r, q, k};

"board.h"

extern const int CHAR_TO_PIECE[];

并在board.c

// convert ASCII character pieces to encoded constants
int CHAR_TO_PIECE[] = {
    ['P'] = P,
    ['N'] = N,
    ['B'] = B,
    ['R'] = R,
    ['Q'] = Q,
    ['K'] = K,
    ['p'] = p,
    ['n'] = n,
    ['b'] = b,
    ['r'] = r,
    ['q'] = q,
    ['k'] = k
};

最佳答案

您可以编写一个函数来为您的字符输入返回特定的枚举。

enum Piece {P, N, B, R, Q, K, p, n, b, r, q, k};

Piece charToPiece(char ch)
{
    switch (ch) {
        case 'P':
            return P;
        case 'N':
            return N;
        case 'B':
            return B;
        case 'R':
            return R;
        case 'Q':
            return Q;
        case 'K':
            return K;
        case 'p':
            return p;
        case 'n':
            return n;
        case 'b':
            return b;
        case 'r':
            return r;
        case 'q':
            return q;
        case 'k':
            return k;
    }
}

关于c++ - 如何检索基于 char 数组的枚举索引值?在 C++ (cpp) 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73804659/

相关文章:

c++ - vector::begin() 和 std::begin() 之间的区别

c++ - 从 shell 扩展程序将项目插入到桌面右键单击菜单

algorithm - 处理棋盘对称性

ios - 如何在 xcode 项目中发布树结构?

java - 棋盘坐标

computer-science - 国际象棋引擎和国际象棋架构之间的区别

c++ - C/C++如何计算数值数据集的条纹度?

c++ - 文本解密 - 移位出错

c++ - 如何获取线程状态(例如挂起)、内存+CPU使用率、启动时间、优先级等

c - 在现有的 C 国际象棋引擎中实现多线程