我刚刚完成(相当成功)在计算机科学一和二在一个领先的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