让我们说我有一个字符串变量叫"数字"被定义为" 12345"在字符串中:
string numbers = "12345";
如果是这种情况,我该如何转换该变量,以便我可以将它们存储为整数?现在我知道有多种方法可以使用像stoi,atoi,stringstream等字符串库来实现它...但这里的诀窍是让它成为可能而不使用任何这些。当有很多有效的方法时,我个人不理解这项任务,但这只是我的意见。
我在想我是否会创建一个函数,它将各个数字存储为使用循环的字符数组,并以某种方式将它们作为int粘在一起。我是否会进入正确的轨道?
谢谢
编辑:我在谈论c ++答案 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