我正在开发一个小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。
感谢您的帮助。
答案 0 :(得分:0)
我想知道你是如何将输入读入一个双字符数组的。请注意,习惯上使用空字符终止此类字符串,这只留下一个用于实际输入的字符串。要在C ++中读取字符串,请使用以下代码:
std::string s;
std::cin >> s;
或者,对于整行,请使用:
std::string line;
getline(std::cin, line);
在任何情况下,这些都是在任何C ++文本中解释的基础知识。去读一个,这是不可避免的!