표준 스트림 입력 오류 처리
C++/C++ 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;
}
'C++ > C++' 카테고리의 다른 글
템플릿(template) 사용 시 typename 사용 법 (0) | 2021.06.07 |
---|---|
sync_with_stdio(false) - 입출력 스트림 속도 올리기 (0) | 2021.06.01 |
__declspec(align(#)) 과 alignas (0) | 2021.05.07 |
TLS(Thread Local Storage) 를 사용하는 이유 (0) | 2021.05.01 |
GCC로 컴파일하기 (0) | 2021.04.14 |