我剛剛完成(相當成功)在計算機科學一和二在一個領先的NCAA Division 1大學介紹了專門用C++教的,我不能告訴你有多少次我搜索這個網站如何接受和驗證一個int一個int,一個字符,只有一個字符,一個字符串,只有一個字符串?毫無疑問,對於這些問題有很多方法,但通常情況下SO的具體情況非常特殊。我只是在尋找一種按照上面的要求工作的通用方法。我提供我的方法,我自己制定了。我無法想象沒有其他類似的位置確實存在相同的問題。如果還有其他方法可以完成a)工作的這些看起來較小的任務,並且b)涉及的編碼比我所概述的要少,那麼我會很樂意看到它。int,char和string cin和驗證方法?
0
A
回答
0
#include <string>
#include<iostream>
using std::cin;
using std::cout;
int main() {
int answer1 = 0;
cout << "An int Question?\n"
<< "1. Yes.\n"
<< "2. No.\n";
while (!(cin >> answer1) || answer1 < 1 || answer1 > 2) {
cin.clear();
cin.ignore(std::numeric_limits<std::stream_size>::max(), '\n');
cout << "Input Error!\n"
<< "An int Question?\n"
<< "1. Yes.\n"
<< "2. No!\n";
}
cout << "The int answer is " << answer1 << "\n\n";
char answer2 = 'X';
cout << "A char Question?\n"
<< "A. Yes.\n"
<< "B. No.\n";
while (!(cin >> answer2) || !isalpha(answer2) || answer2 != 'A' && answer2 != 'B') {
cin.clear();
cin.ignore(std::numeric_limits<std::stream_size>::max(), '\n');
cout << "Input Error!\n"
<< "A char Question?\n"
<< "A. Yes.\n"
<< "B. No!\n";
}
cout << "The char answer is " << answer2 << "\n\n";
std::string answer3 = "";
cout << "A string Question?\n"
<< "Yes.\n"
<< "No.\n";
while (!(cin >> answer3) || answer3 != "Yes" && answer3 != "No") {
cin.clear();
cin.ignore(std::numeric_limits<std::stream_size>::max(), '\n');
cout << "Input Error!\n"
<< "A string Question?\n"
<< "Yes.\n"
<< "No.\n";
}
cout << "The string answer is " << answer3 << "\n\n";
}
+0
爲什麼使用256來調用'ignore'?你應該使用'std :: numeric_limits
+0
@Nathan:謝謝,你是對的,除此之外,我通常只關注那些更新的C++,並且增加了一些複雜。 – Chris
+0
答案應該是給大家的。如果增加了一個額外的東西,它可能不得不查找,如果它使代碼更脆弱? – NathanOliver
相關問題
- 1. CharacterSet to String和Int to Char鑄造
- 2. 驗證char *取自std :: cin的長度
- 3. CIN和方法聲明
- 4. strtok和int vs char char C
- 5. Js用int和selectbox驗證
- 6. strfry(char * __ string)返回int?
- 7. Java:equals()和=== String和int變量
- 8. 驗證reflect.Type的其他方法int和float64
- 9. 傳遞char指針到cin和cin.get()
- 10. 使用cin驗證輸入
- 11. String方法split(String str,int len)和split(String str)之間有什麼區別?
- 12. 驗證與直列驗證方法和驗證程序類
- 13. 在Java中將int的2d數組轉換爲char和string
- 14. Unsigned char char *和int在C中?
- 15. C比較char和int
- 16. Java代碼Char和Int
- 17. 數組的Int和* Char - C++
- 18. int char *和內存分配
- 19. 複製std :: string :: insert(int pos,char ch)
- 20. java中char(int)和int的區別
- 21. String.Replace(char,char)或Replace(string,string)?
- 22. 如何拒絕cin中的char輸入並定義最小和最大int值?
- 23. JQUERY int和string加成
- 24. C++ 11 cin輸入驗證
- 25. Char驗證C++
- 26. startsWith(String)方法和數組
- 27. ASPxGridView和eval(string)方法
- 28. F#,Split String和.Net方法
- 29. 代碼無法驗證:TypeError無法連接'str'和'int'對象
- 30. char *和int *的區別是什麼?C++ char * vs int *
這看起來太寬泛了。有一百萬種方法可以做到這一點。 – yellowantphil