打印枚举文本而不是值 C++

Print enum text instead of value C++

在 Form.h 我有:

enum Direction {
   NORTH = 0,
   SOUTH = 1,
   EAST = 2,
   WEST = 3,
};

在 Play.cpp 中,我有一个打印运动的方法 "PlayerA moved to 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;
}