打印enum的文本值,而不是值
printing text-value of enum, not the value
我想打印一个enum的文本值,如果我输入5,它将打印F1。如果我输入63,它必须打印H8。在下面的代码中,我尝试了count <<"你选择了:"<<board_square (chosen_piece) & lt; & lt;结束,但是输出两次。
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;
}
我想打印一个enum的文本值
那可不简单。我觉得这是XY问题。您可以这样做(假设语言环境中字母表中的字母是按顺序排列的):
string name;
name += (char)(column + 'A');
name += (char)(line + '1');
cout << "You chose: " << name << endl;
枚举器名称在运行时不可用;它们只是为源代码中的数字命名的一种方便的方式。您将需要一些运行时代码来将数值转换为运行时字符串,例如:
std::string label(int row, int col) {
return {char('A'+row), char('1'+col)};
}
相关文章:
- 如何使代码打印文本文件中的第一行?
- 我想使用 "cout" 命令慢慢打印文本,但我真的找不到任何解决方案
- C++ 在带有回车符的终端中重新打印文本
- 打印文本导致内存泄漏
- 如何使用递归打印文本反驳
- 从 HDFS 读取和打印文本文件
- 在 C++ 中打印文本文件时出现问题
- WinAPI - 如何打印文本以编辑控件
- 打印文本文件c++的输出
- c 打印文本以for循环
- 在 dlib 窗口中打印文本
- 使用GLUT简单地打印文本
- Cout 不会打印文本而没有 endl 在循环中?
- 为什么它只打印文本文件的一个单词,而不是将整个文本文件打印到html文件中
- 在Windows C++中打印文本和变量
- 无法从文件打印文本
- Libharu pdf创建:如何知道打印文本的大小
- opengl在屏幕菜单上打印文本变量
- 在指针之间打印文本
- 如何在按下回车键后使用cout打印文本