ユーザーからの char 配列入力を受け取る小さな C++ プロジェクトに取り組んでいます。値に応じて、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 配列 item[2] への入力を受け取り、これを上記の変換関数に渡します。この関数は、最初の char を ASCII に変換し、ASCII の 10 進値が 1 ~ 9 の場合は num に変換し、2 番目の char が 0 ~ 9 の場合は num の値を 10 倍します ( 1 単位に沿って移動)、ASCII 値の 10 進値を追加します。いつでも失敗する可能性があり、代わりに値 0 を返します。
値を受け取った後に関数を計算してコンソールでこのコードを実行すると、1 桁の数字 (1 ~ 9) では正常に機能しますが、2 桁の数字を使用しようとすると、23 などの数字が繰り返されます。 2233 を出力します。
助けてくれてありがとう。