c++ - 打印枚举的文本值,而不是值

标签 c++ enums cout

我想打印枚举的文本值,如果我输入 5,它将打印 F1。如果我输入 63,它必须打印 H8。在下面的代码中,我尝试了 cout << "You choose: "<< board_square(chosen_piece) << endl,但它打印了两次值。

enum board_square {
    A1 = 1, B1, C1, D1, E1, F1, G1, H1,
    A2, B2, C2, D2, E2, F2, G2, H2,
    A3, B3, C3, D3, E3, F3, G3, H3,
    A4, B4, C4, D4, E4, F4, G4, H4,
    A5, B5, C5, D5, E5, F5, G5, H5,
    A6, B6, C6, D6, E6, F6, G6, H6,
    A7, B7, C7, D7, E7, F7, G7, H7,
    A8, B8, C8, D8, E8, F8, G8, H8,
};

int choose_piece()
{
    using namespace std;
    cout << "X Location?" << endl << ">";
    int column;
    cin >> column;
    cout << "Y Location?" << endl << ">";
    int line;
    cin >> line;
    //This formula calculates which square is placed on the dimensions you entered
    int chosen_piece = (column + (line - 1) * 8);
    return chosen_piece;
}

int main()
{
    using namespace std;
    cout << "Enter dimensions for the piece you want to move" << endl;
    int chosen_piece = choose_piece();
    cout << chosen_piece << endl;
    //How can I get it to print the enum for it here?
    cout << "You chose: " << board_square(chosen_piece) << endl; //This doesn't work either :(
    return 0;
}

最佳答案

您的运行时 C++ 可执行文件并未设计为知道您创建的所有符号的名称。

对于您的特定问题,生成匹配名称非常容易。

std::string name_of( board_square s )
{
    std::string name;
    name += 'A' + int(s) % 8;  // First character
    name += '1' + int(s) / 8;  // Second character
    return name;
}

关于c++ - 打印枚举的文本值,而不是值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16176430/

相关文章:

c++ - 是否可以在 googletest 的 Predicate Formatter 中使用 ASSERT_NEAR

c++ - 如何给 Rand() 条件

java - 是否可以弃用枚举常量?

c++ - C++调整行高

c++ - 在 C++ 中,如果没有换行符,则不会打印字符串

c++ - 如何使用 winapi 在 listview 子项中创建超链接

c++ - 访问嵌套的容器成员

enums - Protocol Buffer : enum with default value

perl - 如何在 Perl 中创建枚举类型?

c++ - Cout 给出了一个奇怪的输出