我有一個int var;並使用cin,但如何檢查用戶是否輸入一個浮點數或給我一個解決這個問題的方法?檢查用戶是否向int var輸入了一個浮點數?
0
A
回答
2
有沒有簡單的方法來做到這一點。通過>> operator
的輸入實際上不適合與可能輸入錯誤事物的人進行交互。你將不得不以字符串形式讀取輸入,然後使用類似strtol的函數或自己的手動編碼來檢查它。
下面是採用strtol的做法的輪廓:
#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
bool GetInt(istream & is, int & n) {
string line;
if (! getline(is, line)) {
return false;
}
char * ep;
n = strtol(line.c_str(), & ep, 10);
return * ep == 0;
}
int main() {
int n;
while(1) {
cout << "enter an int: ";
if (GetInt(cin, n)) {
cout << "integer" << endl;
}
else {
cout << "not an integer" << endl;
}
}
}
1
閱讀變量到一個臨時的字符串,分析它,看是否包含.
,,
,E
,e
,或其他非整數的字符,然後將其轉換爲int,如果它是有效的。
或者,只要將值讀入一個float並將其轉換爲int(根據需要舍入或截斷)即可。
0
您可以使用臨時字符串和boost::lexical_cast
將其轉換爲整數或浮點數變量如下:
#include <iostream>
#include <boost/lexical_cast.hpp>
int main()
{
using namespace std;
string buf;
cin >> buf;
bool int_ok = false, float_ok = false;
try {
int x = boost::lexical_cast<int>(buf);
int_ok = true;
} catch (boost::bad_lexical_cast e) { int_ok = false; }
if (!int_ok) {
try {
float x = boost::lexical_cast<float>(buf);
float_ok = true;
} catch (boost::bad_lexical_cast e) { float_ok = false; }
}
return 0;
}
有可能根據你想要達到的目標,做一個更好的解決方案。
1
可能最簡單的方法是接受float/double,將其轉換爲int,然後測試以查看轉換是否修改了該值。
int i ;
float f ;
std::cout << "Input: " ;
std::cin >> f ;
i = static_cast<int>(f) ;
if(static_cast<float>(i) != f)
{
std::cout << "Not an integer" ;
}
else
{
std::cout << "An integer" ;
}
請注意,這會爲不能精確表示浮點但工作範圍可能滿足您的需求大的整數(最值超過6位數以上)失敗。
相關問題
- 1. 如何檢查用戶是否輸入了一個整數(Python)
- 2. 檢查HTML輸入中輸入的用戶值是否爲浮點數
- 3. 檢查用戶輸入是浮點還是整數
- 4. 檢查一個數是int還是浮點數
- 5. 檢查輸入是否有int int Javascript
- 6. 如何檢查是否輸入了一個值使用輸入
- 7. C++檢查輸入是否僅使用浮點數#iostream
- 8. 檢查一個$ var是一個int還是一個數組
- 9. 檢查用戶輸入是否是一個整數c#
- 10. 檢查用戶是否輸入整數
- 11. 檢查數字是否精確浮點數(int)或實際浮點數
- 12. 如何檢查輸入不是int或浮點在C中?
- 13. 如何檢查用戶是否爲DataGridViewColumn輸入了唯一值?
- 14. 檢測用戶是否輸入了UITextField
- 15. 如何檢查用戶是否輸入了某個詞
- 16. 如何檢查用戶是否輸入了單個字母?
- 17. C# - 檢查輸入是否是一個int
- 18. 檢查浮點模數int是否爲有限序號
- 19. Bash RegEx檢查用戶輸入的浮點數
- 20. 檢查一個變量是否是雙精度浮點數
- 21. 使用switchcase來檢查用戶輸入是字符串還是int或浮點數
- 22. 檢查用戶輸入是否有效
- 23. 檢查用戶輸入是否適合
- 24. 檢查用戶輸入的單個數值是否爲數字
- 25. 檢查輸入是否爲浮點或不在C中?
- 26. 如何檢查浮點值中的輸入是否爲空?
- 27. 檢查用戶是否點擊了一個iframe中嵌入YouTube視頻
- 28. 用戶輸入檢查INT僅
- 29. 如何檢查用戶是否在Go中輸入了空值?
- 30. 檢查用戶是否輸入了任何內容?
我使用類型casting:float a; a =(int)a;謝謝 – Snoob 2010-08-04 08:06:19
我不應該那樣做,如果我是你,史努比。你的電話號碼仍然是一個浮動。也許'浮動一個; int b; b =(int)a;'會是一個更好的選擇。 – 2010-08-04 10:03:42