C++判斷輸入是否為double
之前寫過了Python如何判斷輸入字符串是否為數字,但是Python是弱類型語言,相比之下C++這種強類型語言判定難度更大。
例如,我要把不斷輸入的字符串中數字都轉為double類型,別的都保存為字符串。那么我接收輸入的數據類型只能為string。
C++和Python一樣提供了isdigit()的方法,但是isdigit()只能判斷一個字符,且只能一位一位判斷,也就是說只能判斷一個字符是不是0~9之間的整型數。連負數都無法判斷。
好在C++11在string類中,提供了stoi, stod, stof, stol, stoll等函數分別是把字符串轉化為int, double, float, long, long long型。
那么,思路就和Python中一樣了,利用異常捕捉。
bool isdouble(string x) {
double y;
try{
y = stod(x);
}
catch (const std::exception&){
return false;
}
return true;
}
同理,原理是stod()這個函數,無法將非數字的變量轉換為double。