字符串或整数转换为 ASCII

时间:2021-06-22 04:22:12

标签: c++

我需要帮助将无符号整数或字符串转换为字符或 ASCII 整数。我无法访问我的 switch case 语句,因为令牌值的解释不正确。我的起始数据类型是一个字符串,取自一个队列。

令牌是整数类型,但不被视为 ASCII。我查看了从字符串到 ASCII 或字符串到 Char 的转换,但我对如何实现它感到困惑:所有定义都硬编码了一个字符串 Char[] = "string";而我需要通过引用传递一个字符串。

while (queueObj.IsEmpty() == false)                         // While the queue has nodes
        {           
            string queueString = queueObj.head->dataQueue;  // Get data from Queue node
            int token = std::stoul(queueString);            // Converts string data to integer value
            
            switch (token)                                  // compares the value of the queue data for stack operation
            {
                case '+':
                {
                  // switch case operations
                }

1 个答案:

答案 0 :(得分:0)

我建议通过将字符串表示映射到 enum 来明确检查支持的运算符:

enum Operation { kPlus, kMinus, /* and so on */ };

const std::map<std::string, Operation> operations {
  {"+", kPlus},
  {"-", kMinus},
};

您现在可以尝试按如下方式查找每个令牌:

string queueString = queueObj.head->dataQueue;
if (auto it = operations.find(queueString); it != cend(operations)) {
  // It's a known operation
  switch (*it) {
    case kPlus: ...; break
    case kMinus: ...; break
  }
} else {
  // It's a number
  auto number = std::stoul(queueString);
}
相关问题