C++/C++
표준 스트림 입력 오류 처리
Elan
2021. 5. 21. 11:17
사용자로 부터 값을 입력받을 경우 보통 'std::cin>>변수명'을 사용한다.
이때 변수 타입에 맞지 않는 값을 입력하면 오류가 발생한다.
int main() {
int num;
std::cin >> num;
std::cout << num << std::endl;
std::string str;
std::cin >> str;
std::cout << str << std::endl;
return 0;
}
위의 코드에서 int형 변수 num에 문자를 입력하면 cin>>num 이 실패한다.
이 경우 모든 표준 입출력이 실패하게 된다.
따라서 이를 방지하기 clear와 ignore 을 통해 표준 입력오류를 해제하고,
스트림에 들어있는 내용들을 지워야한다.
int main() {
int num;
std::cin >> num;
if (cin.fail() == true) {
std::cout << "잘못된 값을 입력했습니다!!" << std::endl;
std::cin.clear();//내부적으로 설정된 오류 값을 초기화
std::cin.ignore(1000,'\n');//1000개의 입력값을 비우고, 줄바꿈 문자를 만날 경우 반환한다
}
else
std::cout << num << std::endl;
std::string str;
std::cin >> str;
std::cout << str<<std::endl;
return 0;
}