【发布时间】:2013-12-14 03:43:06
【问题描述】:
这是我的代码:
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(),它工作正常;然后我使用bIs_taken()函数测试ID号是否已经被占用,它也可以正常工作;然后我在do-while循环的条件下测试ID.size() != 10,因为我只希望用户输入10个ID号,这就是问题所在。为什么ID.size()达到10时循环不退出?
我通过cout在每次循环运行后测试ID.size() 的大小,在第10 个有效ID 输入后它确实达到了大小10,但循环仍然没有结束。为什么?
编辑:ID 和 stored_ID 都是函数中其他位置的字符串向量。
【问题讨论】:
-
链接到代码通常是不好的形式,而不是将其包含在您的问题中。此外,如果您使用语言(C++?)进行标记会有所帮助。
标签: c++ loops while-loop do-while