如何在 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';
}
这是我的代码
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';
}