1

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

谢谢你的帮助。

4

1 回答 1

0

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

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

或者,对于整行,使用这个:

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

无论如何,这些都是任何 C++ 文本中解释的基础知识。去读一读,这是不可避免的!

于 2013-01-29T23:05:00.483 回答