기본적으로 숫자를 입력으로 예상합니다. 이제 else else if loop가 잘 작동한다는 것을 알았으니 크기는 무시해도됩니다. 그러나 그 숫자가 조금 더 까다 롭다는 것을 증명한다면 테스트를 해보십시오. 난 그냥 다시 함수를 호출하고 사용자가 뭔가 영숫자 또는 일반 단어로 입력하면 다시 시작 싶어요. 또는 엔터를 누릅니다. 숫자가 아닌 것. 나는 int numTemp
에 입력했기 때문에 cin을 시도했으나 무한 루프가 발생하여 수많은 시간이 "what is the bitrate"
에 불과합니다. 누구든지 내가 뭘 잘못하고 있는지 알아? 첫 번째 if 문 안에 cin.clear()
과 cin.ignore(100, "\n")
을 넣으려고했으나 아무 소용이 없었습니다. 미리 감사드립니다.조건을 검사 할 때 무한 루프가 발생했습니다. C++! cin
bool iTunes::setBitRate()
{
cout << "What is the bitrate? ";
int numTemp;
cin >> numTemp;
if (!cin)
{
cout << "WRONG" << endl;
setBitRate();
}
else if(numTemp < MIN_BITRATE || numTemp > MAX_BITRATE)
{
cout << "Bit Rate out of range" << endl;
setBitRate();
}
else
{
bitRate = numTemp;
}
}
, 나는 값에 읽을 루핑 원합니다. –
입력에서 비 숫자를 제거하려면'cin.clear()'와'cin.ignore'가 필요합니다. 그렇지 않으면 똑같은 이유로 연속 입력이 모두 실패합니다. –