如何在 C++ 中将字符串转换为多于 1 位的 int?

How to turn a string into int with more than 1 digit in c++?

这是我的代码

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 等等。

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';
}