c ++使用ASCII将字符转换为整数

时间:2013-01-29 15:21:45

标签: c++ ascii

我正在开发一个小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;
}

它接收主函数中char数组项[2]的输入,并将其传递给上面的转换函数。该函数将第一个char转换为ASCII,然后将ASCII的十进制值转换为num(如果它在1和9之间),然后将第二个char转换为ASCII,如果它在0到9之间,则将num中的值乘以10(沿着一个单位移动)并添加ASCII值的十进制值。在任何时候它都可能失败,它会返回值0。

当我在接收到一个值并在控制台中运行此代码后对该函数进行cout时,它适用于单个数字的数字(1 - 9),但是当我尝试使用一个双位数字时,它会重复数字,例如for 23,它将输出2233。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我想知道你是如何将输入读入一个双字符数组的。请注意,习惯上使用空字符终止此类字符串,这只留下一个用于实际输入的字符串。要在C ++中读取字符串,请使用以下代码:

std::string s;
std::cin >> s;

或者,对于整行,请使用:

std::string line;
getline(std::cin, line);

在任何情况下,这些都是在任何C ++文本中解释的基础知识。去读一个,这是不可避免的!