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

C++ 将字符串值转换为int而不使用字符串库中的任何内容,c++,arrays,string,loops,type-conversion,C++,Arrays,String,Loops,Type Conversion,假设我有一个名为“numbers”的字符串变量,它在字符串中定义为“12345”: string numbers = "12345"; 如果是这样的话,我该如何转换这个变量,以便将它们存储为整数?现在我知道使用字符串库有多种方法,如stoi、atoi、stringstream等。。。但这里的诀窍是不使用任何一种方法就可以做到这一点。我个人不理解这个任务,因为有很多有效的方法来完成它,但这只是我的意见 我在想,如果我做一个函数,它使用循环将单个数字存储为字符数组,并以某种方式将它们作为一个整数粘

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

string numbers = "12345";
如果是这样的话,我该如何转换这个变量,以便将它们存储为整数?现在我知道使用字符串库有多种方法,如stoi、atoi、stringstream等。。。但这里的诀窍是不使用任何一种方法就可以做到这一点。我个人不理解这个任务,因为有很多有效的方法来完成它,但这只是我的意见

我在想,如果我做一个函数,它使用循环将单个数字存储为字符数组,并以某种方式将它们作为一个整数粘在一起。我走对了吗

多谢各位

编辑:我说的是c++

试试这个:

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;
stringnumber=“12345”;
int结果=0;
对于(int i=0;i
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;
stringnumber=“12345”;
int结果=0;
对于(int i=0;icout您可以使用
(ch-'0')
将读取的每个字符转换为其等效的int


您可以使用
(ch-“0”)
将读取的每个字符转换为其等效的int


我知道,但是有没有办法在C++中复制?@ KEY-N我明白,但是有没有方法可以在C++中复制?非常感谢。那么为什么不使用
'0'
而不是
48
size()
是一个字符串库函数(好吧,方法),OP建议他们可能想要避免它。太棒了。非常感谢。那么为什么不使用
'0'
而不是
48
size()
是一个字符串库函数(好吧,方法),OP建议他们可能想要避免。是的。没必要。只有当str包含任何其他字符('a','b')而不是数字时,它才会将结果int保存在0到9之间。我会编辑的。没必要。只有当str包含任何其他字符('a','b')而不是数字时,它才会将结果int保存在0到9之间。我来编辑。
#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