0

我有以下场景,其中任何输入字符串都将转换为整数。

Example: 
result = get_integer_from_string("100"); 
result == 100; // true

如何在不使用任何库的情况下编写此函数?我可以通过使用库来做到这一点。

4

3 回答 3

7

按着这些次序:

  1. 解析输入字符串。
  2. 检查字符是否为数字。
  3. 使用一些逻辑将字符格式的数字转换为整数格式。
  4. 此外,如果输入不是整数字符串,您可以实现异常。

我不能告诉你代码,它不会帮助你学习,尝试自己实现代码,这很容易!

于 2013-09-24T06:51:21.723 回答
2

循环遍历字符串,从结尾到开头。获取每个数字,并将其转换为十进制值。将第一个(在反向循环中)乘以1并存储结果。将第二个乘以10并添加到前一个的结果。等等。

于 2013-09-24T06:53:33.443 回答
2

这很容易出现错误情况,但如果字符串是有效整数,则应该可以工作:

int str2int(const char* str) {
    int result = 0;
    char* p = str;
    for (;;) {
        char c = *p++;
        if (c < '0' || c > '9')
            break;
        result *= 10;
        result += c - '0';
    }
    return result;
}

它的行为接近atoi()- 停止对任何非数字的处理,并为空输入返回 0。

于 2013-09-24T06:53:48.830 回答