将字符串值转换为 int U,而无需使用字符串库中的任何内容
Converting string value to int WITHOUT using anything from the string library
假设我有一个名为"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
相关文章:
- 按字母顺序对字符串中的字母进行排序,而无需使用内置的 sort()
- 是否有任何内置的哈希图函数来处理 c++ 中的值输入?
- 是否有任何内置函数可以检查给定的两个数字在给定整数数组中的顺序是否相同?
- C++ 中是否有任何内置阶乘函数?
- 是否有任何内置函数可以告诉编译器分支是否可预测
- 使函数接受字符串变量内的路径
- 我需要在C /C#中使用图形.我可以使用任何内置的C /C#库
- 是否有任何内置类可以处理C 中的大整数值
- c ++中是否有任何内置功能可以在计划的时间运行任务
- 是否有任何内置的 UTF 在 c++ 在窗口中
- 在VC++2010中执行任何内置的ARRAY函数
- C++:如何在不使用任何内置函数的情况下将字符串转换为整数
- 是否有任何内置的CUDA函数允许CUDA内核向主机代码报告错误?
- C++字符串流内联
- c++中比较字符串的内置函数
- 我如何在常数时间(O(1))内获得字母表(1-26)中字符的数值/位置,而不使用任何内置方法或函数
- 有没有一种方法可以在结构中从字符串文本内联定义和初始化字符串数组
- C++中的任何内置哈希方法
- c++库中的任何内置夹子方法
- 如何将字符串向量内爆为字符串(优雅的方式)