如何将数组中的char转换为整数?
忽略第5-100行,这只是我的堆栈。 http://ideone.com/KQytD
向下滚动输出#2正常工作但输出#3没有。一些如何当我将值推回到堆栈中时,当我弹出它时它有+ '43',因为ASCII并且我似乎无法将其变为常规整数值,因此我可以轻松地执行这些操作。
第116行将输入放入char后缀。注意:输入必须在后缀表示法行117中,在运行该函数后将单个整数值放入final。
convertPostfixToEvaluation的工作原理如下:我滚动浏览后缀的每个索引,直到我读入'='然后输出总数/总和。第一个if语句将操作数(0-9)推入堆栈。第二个if语句,如果它读入运算符,则它尝试在第134-158行中进行操作。在if语句之后,我将索引值增加1,以便它可以扫描整个数组。
问题在于我尝试添加,减去,乘以或除以3个以上操作数的开关。所以第三个我认为仍然有价值(+43因为ASCII)。
我的输出(在我的程序底部)显示了尴尬是什么。
切入追逐问题。第二次将char转换为int的问题。
答案 0 :(得分:0)
使用此代码,很多事情很可能错误。
查找函数isdigit
。这应该消除巨大的if
语句。
您可能希望使用字符串查找而不是其他复杂的if
语句:
const std::string my_operators = "+-/*";
if (my_operators.find(postfix[i]) != std::string::npos)
{
// Enter here if the character is a valid symbol.
}
如果您逐个字符地“解析”,则必须建立您的号码:
int number = 0;
// After detecting the character is a number:
number = number * 10 + (postfix[i] - '0');
表达式“postfix [i] - '0'”将返回数字字符和字符之间的距离为零。 C和C ++语言保证以下关系:
'0' < '1' < '2' < '3' < '4' < '5' < '6' < '7' < '8' < '9'
这些语言还说明这些数字是连续的。
建议:使用std::string
而不是字符数组。 std::string
包含一些有用的函数,用于搜索,跳过字符和获取子字符串。