首页 > 解决方案 > 如何在c ++中将字符串转换为超过1位的int?

问题描述

这是我的代码

for (unsigned int i = 0; i < form.size(); i++)
    if (isdigit(form[i]))
       {
            value=form[i] - '0';
            operand.push(value)   //this is a stack
       }

但它只在你有一个 1 位数的 int 时才有效,假设表单字符串有 1,它工作得很好,但是当字符串得到 10 时,它就不起作用了,因为它会先将值设置为 1,然后设置为 0 和不会得到数字 10,有没有办法在 for 循环中做到这一点?我不能使用 atoi,因为有时字符串可以包含 '/' 或 '*' 之类的字符,我需要将它们放在另一个堆栈中。我想知道是否有办法让值变量包含整数 10。我必须从字符串中保存整数和运算符。获取数字 1 然后 0 不是问题,问题是将 2 个整数转换为一个多位整数 1 0 转换为 10,将 2 5 转换为 25 等等。

标签: c++arraysstringc++11integer

解决方案


for (int i = 0, temp = 0; i <= form.size(); i++) {
  if (i == form.size() || !isdigit(form[i])) {
    operand.push(temp);
    temp = 0;
  }
  temp = (temp * 10) + form[i] - '0';
}

推荐阅读