int、char 和字符串 cin 以及验证方法?
int, char, and string cin and validate method?
我刚刚(相当成功)在一所领先的 NCAA 第 1 分区大学完成了计算机科学入门 I 和 II,我无法告诉你我在这个网站上搜索了多少次如何接受和验证一个int 和只有一个 int,一个 char 和只有一个 char,和一个字符串和只有一个字符串?毫无疑问,有许多方法可以解决这些问题,但通常 SO 上的内容是针对特定情况的。我只是在寻找一种按上述要求工作的通用方法。我提供我的方法,我自己制定的。我无法想象没有其他类似情况的人有或确实有相同的问题。如果有其他方法可以完成这些看似次要的任务,并且 a.) 有效,并且 b) 涉及的编码比我概述的少,我很想看看它。
#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";
}
我刚刚(相当成功)在一所领先的 NCAA 第 1 分区大学完成了计算机科学入门 I 和 II,我无法告诉你我在这个网站上搜索了多少次如何接受和验证一个int 和只有一个 int,一个 char 和只有一个 char,和一个字符串和只有一个字符串?毫无疑问,有许多方法可以解决这些问题,但通常 SO 上的内容是针对特定情况的。我只是在寻找一种按上述要求工作的通用方法。我提供我的方法,我自己制定的。我无法想象没有其他类似情况的人有或确实有相同的问题。如果有其他方法可以完成这些看似次要的任务,并且 a.) 有效,并且 b) 涉及的编码比我概述的少,我很想看看它。
#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";
}