将字符串值转换为 int U,而无需使用字符串库中的任何内容

Converting string value to int WITHOUT using anything from the string library

本文关键字:字符串 任何内 转换 int      更新时间:2023-10-16

假设我有一个名为"numbers"的字符串变量,它在字符串中定义为"12345":

string numbers = "12345";

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

我在想我是否会创建一个函数,它使用循环将单个数字存储为字符数组,并以某种方式将它们粘在一起作为整数。 我走对了路吗?

谢谢

编辑:我说的是c ++

您可以使用

(ch - '0') 将读取的每个字符转换为等效的 int int

std::string str = "12345";
int number = 0;
for(auto ch : str)
{
    number = (number * 10) + (ch - '0');
}
return 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 范围内以验证输入。

#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