c++ 문자열 입력시 오류문제
조회수 733회
int money(int coin, int add)
{ int coin2;
here:
system("cls");
coin2 = coin;
menu(coin, add);
cout << "입금해주세요. (100원 단위만 가능합니다.) :" << endl;
while (1) {
cin >> coin;
if (coin % 100 == 0) {
coin = coin + coin2;
goto here;
}
else if(coin % 100 > 0){
cout << "100원 단위로 입금해주세요." << endl;
}
else {
system("cls");
cin.clear();
cin.ignore();
cout << "올바른 금액을 입력하시오";
goto guest2;
}
}
return 0;
}
원래는 문자열을 입력하면 else로 가서 처리하려했는데 문자열 입력시 coin값이 0으로 인식되어서 그런지 if문으로 가고 계속 반복되는 오류가 발생합니다. 문자열 예외처리할 다른방법이 있는지 조언 구합니다..ㅠㅠ
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
일단
cin >> coin
에서coin
이 함수로 들어온 인자인데 따로 변수를 선언하지 않고 사용한 것은 상당히 위험한 것 같고요.c++ 에서 cin의 예외를 처리 하기 좋은 방법이 있습니다.
//여기에 코드를 입력하세요 int data; cin >> data; if (cin.fail()) { cout << "입력 오류" << endl; } else { cout << "입력 성공" << endl; }
cin.fail()
에서 확인하여 int 타입에 맞는 지 확인 할 수 있습니다.그리고 이건 개인 스타일 차이겠습니다만... goto 문을 사용하는 것 보다 함수 호출을 하는 것이 어떨런지요.
샘플 코드이니 참고용으로만 봐주세요.
//여기에 코드를 입력하세요 void display() { ... cout << "입금해주세요. (100원 단위만 가능합니다.) :" << endl; } int money(int coin, int add) { ... display() while(1) { cin >> coin; if (coin % 100 == 0) { display(); } ... } }
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
댓글 입력