我试图获得一串运行在一起的字符,以便对一组“有效”字符进行解析。如果字符串全部是“有效”集合中的一个,则代码应该继续。如果字符串包含除有效集之外的任何字符,则应返回错误并提示重新输入,并再次检查其是否有效。将字符串与C++中的一组字符进行比较
我想出了两套不同的代码来执行检查,其中“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
非常感谢!奇迹般有效。 – user2856303