我需要帮助将无符号整数或字符串转换为字符或 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
}
答案 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);
}