c++ - 打印枚举文本而不是值 C++
问题描述
在 Form.h 我有:
enum Direction {
NORTH = 0,
SOUTH = 1,
EAST = 2,
WEST = 3,
};
在 Play.cpp 中,我有一种打印运动的方法,例如“PlayerA 移动到 NORTH”
void Play::printMove(Direction dir) {
std::cout << this->getName() << " moved to " << dir << std::endl;
}
因为这打印了 0、1、2 或 3,所以我尝试了:
void Play::printMove(Direction dir) {
std::string moveStr;
switch (dir) {
case NORTH: moveStr = "NORTH";
case SOUTH: moveStr = "SOUTH";
case EAST: moveStr = "EAST";
case WEST: moveStr = "WEST";
}
std::cout << this->getName() << " moved to " << moveStr << std::endl;
}
但这也不起作用。为什么?我可以尝试什么?
解决方案
您需要break
关键字,否则printMove()
将始终导致“WEST”。一旦计算机找到匹配的案例,它就会读取整个switch
语句后面的代码。关键字告诉计算机在.break
的结束括号之后停止阅读并继续程序switch
。
void Play::printMove(Direction dir) {
std::string moveStr;
switch (dir) {
case NORTH:
moveStr = "NORTH";
break;
case SOUTH:
moveStr = "SOUTH";
break;
case EAST:
moveStr = "EAST";
break;
case WEST:
moveStr = "WEST";
break;
}
std::cout << this->getName() << " moved to " << moveStr << std::endl;
}
推荐阅读
- html - 显示表单字段默认值的最佳可访问方式
- python - Can't open Microsoft Teams with python (3.8) script using any method
- math - 具有 3 个可能结果的图表评估
- python - 真正的while循环python
- nginx - 当多个标头具有相同名称时,nginx读取响应标头
- javascript - Javascript更改多个对象值
- python - 如何动态地将文本包装在 tkinter 标签中?
- php - 即使我已经指定了使用类,也找不到 PHP 命名空间和使用致命错误类
- c# - .NET Core Identity 如何根据数据库设置选项值
- react-native - 可用于 react-native 的 binaryToBase64 的替代品