所以这是我的代码:
int k = 1;
string sTemp = "";
do {
cout << "Enter the ID number for sequence " << k << ": ";
cin >> sTemp;
if(!bValid_digit(sTemp))
cout << "Invalid input. ID number must be 3 digits long.\n\n";
else if(bIs_taken(sTemp))
cout << "Invalid input. ID number cannot be the same as a previous member.\n\n";
else {
k++;
ID.push_back(sTemp);
stored_ID.push_back(sTemp);
}
}
while(bIs_taken(sTemp) || !bValid_digit(sTemp) || ID.size() != 10);
我正在做的是获得3位ID成员的用户输入,对此我有一个单独的功能bValid_digit()
,可以正常工作;然后我通过使用函数测试ID号是否已经被占用bIs_taken()
,它也可以正常工作;然后我ID.size() != 10
在do-while循环的条件下进行测试,因为我只希望用户输入10个ID号,这就是问题所在。为什么在ID.size()
达到10时循环不退出?
我ID.size()
通过cout
在每次循环运行之后检查大小来测试,并且确实在第10个有效ID输入之后达到了大小10,但是循环仍然没有结束。为什么?
编辑:ID
和stored_ID
都是函数中其他地方的字符串向量。
您需要重新评估bIs_taken(sTemp)
多次:
任何一个
while (ID.size() != 10)
,另外两个则是多余的(如果长度无效或ID已被使用,则不能达到十分之一)本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句