我正在开发一个小 c++ 项目,该项目接收来自用户的 char 数组输入。根据值,我将其转换为 int。我知道有更好的方法可以做到这一点,但我想我会尝试通过 ASCII 将它转换为以后允许其他用途。我当前的转换代码是:-
int ctoi(char *item){
int ascii, num = 0;
ascii = static_cast<int>(item[0]);
if(ascii >= 49 && ascii <=57){
num = ascii - 48;
}else{
return 0;
}
ascii = static_cast<int>(item[1]);
if(ascii >= 48 && ascii <=57){
num = num * 10;
num = num + (ascii - 48);
}else{
return 0;
}
return num;
}
它在 main 函数中接收到 char 数组 item[2] 的输入,并将其传递给上面的转换函数。该函数将第一个字符转换为 ASCII,然后将 ASCII 的十进制值转换为 num,如果它在 1 到 9 之间,然后将第二个字符转换为 ASCII,如果它在 0 到 9 之间,它将 num 中的值乘以 10 (移动一个单位)并添加 ASCII 值的十进制值。在任何时候它都可能失败,而是返回值 0。
当我在收到一个值后计算函数并在控制台中运行此代码时,它适用于单个数字(1 - 9),但是当我尝试使用两位数时,它会重复数字,例如 23,它将输出 2233。
谢谢你的帮助。