我正在創建一個程序,它將十進制值轉換爲二進制值。我遇到的問題是,在我的if
聲明中,我正在檢查變量int decimal
的用戶輸入是否包含數字,然後才轉換爲轉換值,但是當它是數字時,它將它視爲字母字符,然後導致程序無限循環。C++ - isdigit無法正常工作,導致永不結束循環
當我將isdigit(decimal)
更改爲!isdigit(decimal)
時,轉換工作正常,但如果我放入字母字符,則會再次無限循環。我在做一些非常愚蠢的事情嗎?
#include <iostream>
#include <string>
#include <ctype.h>
#include <locale>
using namespace std;
string DecToBin(int decimal)
{
if (decimal == 0) {
return "0";
}
if (decimal == 1) {
return "1";
}
if (decimal % 2 == 0) {
return DecToBin(decimal/2) + "0";
}
else {
return DecToBin(decimal/2) + "1";
}
}
int main()
{
int decimal;
string binary;
cout << "Welcome to the Decimal to Binary converter!\n";
while (true) {
cout << "\n";
cout << "Type a Decimal number you wish to convert:\n";
cout << "\n";
cin >> decimal;
cin.ignore();
if (isdigit(decimal)) { //Is there an error with my code here?
binary = DecToBin(decimal);
cout << binary << "\n";
} else {
cout << "\n";
cout << "Please enter a number.\n";
}
}
cin.get();
}
嘗試通過代碼要與調試,並看看會發生什麼。 – MicroVirus
Dev-C++調試器不給我任何東西,它成功編譯,當我做任何事情導致問題它不會返回任何東西給我 – RoyalSwish
我的意思是嘗試一步一步地通過調試器的代碼,並看到怎麼了;特別是執行流程是什麼。 – MicroVirus