그래서 여기에 내 코드가 있습니다.
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 번호가 이미 사용되었는지 테스트 합니다. 그런 다음 ID.size() != 10
사용자가 10 개의 ID 번호 만 입력하기를 원하기 때문에 do-while 루프의 조건에서 테스트합니다 . 그 안에 문제가 있습니다. ID.size()
10에 도달 해도 루프가 종료되지 않는 이유는 무엇 입니까?
나는 시험 ID.size()
에 의해 cout
루프의 각 실행 후 크기를 보내고 그리고 실제로 10 유효한 ID 입력 후 사이즈가 10에 도달 않지만, 루프는 여전히 끝나지 않습니다. 왜?
편집 : ID
그리고 stored_ID
함수의 다른 곳에있는 두 문자열 벡터입니다.
bIs_taken(sTemp)
여러 번 재평가 합니다.
어느 한 쪽
while (ID.size() != 10)
하면 나머지 두 개는 중복됩니다 (길이가 유효하지 않거나 ID가 이미 사용 된 경우 10 분의 1에 도달 할 수 없음).이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다