将字符串值转换为int,不使用字符串库中的任何内容

时间:2017-01-11 05:07:51

标签: c++ arrays string loops type-conversion

让我们说我有一个字符串变量叫"数字"被定义为" 12345"在字符串中:

string numbers = "12345";

如果是这种情况,我该如何转换该变量,以便我可以将它们存储为整数?现在我知道有多种方法可以使用像stoi,atoi,stringstream等字符串库来实现它...但这里的诀窍是让它成为可能而不使用任何这些。当有很多有效的方法时,我个人不理解这项任务,但这只是我的意见。

我在想我是否会创建一个函数,它将各个数字存储为使用循环的字符数组,并以某种方式将它们作为int粘在一起。我是否会进入正确的轨道?

谢谢

编辑:我在谈论c ++

3 个答案:

答案 0 :(得分:2)

您可以使用(ch - '0')将您阅读的每个字符转换为等效的int。

std::string str = "12345";
int number = 0;

for(auto ch : str)
{
    number = (number * 10) + (ch - '0');
}

return 0;

答案 1 :(得分:0)

试试这个:

string numbers = "12345";
int result = 0;
for (int i = 0; i < numbers.size(); i++) {
  result += (numbers[i] - 48) * pow(10, (numbers.size() - i - 1));
}
cout << result << endl;

关键的想法是,字母'0'在ASCII中是48 您可以检查numbers[i]是否在48到57范围内以验证输入。

答案 2 :(得分:0)

#include <iostream>
using namespace std;

int main() {
    string numbers = "12345";
    int result = 0;
    for (int digit : numbers)
        result = digit - 48 + result * 10;
    cout << result << endl;
    return 0;
}

输出

12345