【发布时间】:2016-09-27 12:25:04
【问题描述】:
所以我想通过创建自己的函数而不是使用 stoi/atoi 函数来获取一个字符串,例如 8302 并将其转换为整数。
到目前为止,我尝试过这样做:
int stringToInt(string input)
{
int i = 0;
while(input[i] >= '0' && input[i] <= '9')
{
input[i] = input[i] * 10 + ......
i++;
}
return i;
}
我知道每次找到一个整数时我都需要继续乘以 10,这样我就可以增加它,例如 123 = 1*10*10+2*10+3。但我不知道如何编码。任何人都可以提出一种方法吗?
【问题讨论】:
-
为什么要将字符串中的每个 ASCII 字符值乘以 10?
-
您不应该对字符串索引和累加器使用相同的变量。为累加器使用单独的变量。
-
您返回的是索引而不是转换后的数字。此外,您不会检查字符串的结尾。
-
@FirstStep 这是一个名为 awesomelipsis 的 c++17 功能。可变参数模板的扩展,它为您自动完成整个程序。只需粘贴到堆栈溢出中。
-
@FirstStep 看到了吗?已经有 6 个答案:)