사용자로 부터 값을 입력받을 경우 보통 '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;
}
Posted by Elan
: