我正在尝试获取一串运行在一起的字符,以针对一组“有效”字符进行解析。如果字符串都是“有效”集合中的一个,则代码应该继续。但是,如果字符串包含除有效集合之外的任何字符,它应该返回错误并提示重新输入,再次检查其有效性。
我想出了两组不同的代码来执行检查,其中“guess”是输入字符串,A、a、B、b、C、c、D 和 d 是允许的字符。第一组代码第一次看起来运行正确,然后接受任何内容,第二组代码在进入循环后只接受一个有效的字母输入。不过看了之后,似乎这个问题在某种程度上植根于逻辑陈述。无论如何,任何帮助将不胜感激。
代码#1:
int main (){
using namespace std;
string guess;
cout << "please enter your multiple choice answers: ";
cin >> guess;
bool nogood = true;
int i = 0;
while (nogood==true){
if (guess[i]== ('A'||'a'||'B'||'b'||'C'||'c'||'D'||'d')){
i++;
}
else{
cout << "That is not a valid choice please try again: ";
cin.clear();
cin >> guess;
i=0;
}
if (i=guess.length()-1){
nogood = false;
}
else{
nogood = true;
}
}
...code goes on
代码#2:
int main (){
using namespace std;
string guess;
cout << "please enter your multiple choice answers: ";
cin >> guess;
for (int i =0; i < guess.length(); i++){
if (guess[i] == ('A'||'a'||'B'||'b'||'C'||'c'||'D'||'d')){
}
else{
cout << "That is not a valid choice please try again: ";
cin.clear();
cin >> guess;
i=0;
}
}
...code goes on