C++
[C++] cin 정수형 변수에 문자가 입력될 때 처리 (cin.fail, cin.clear, cin.ignore)
CUBE
2021. 8. 22. 17:18
안녕하세요, CUBE입니다.
이번 포스팅에서는 C++에 관한 포스팅인데요.
cin 정수형 변수에 문자가 입력될 때 오류가 발생하는데
이러한 오류를 처리하는 방법에 대해 설명드리고자 합니다.
cin.fail
cin.clear
cin.ignore
3가지의 함수가 있으니 하나하나 알아보도록 할게요!
cin.fail() | 에러 발생 시 true값 반환 |
cin.clear() | cin.fail() 반환값 초기화 |
cin.ignore() | 버퍼안에 있는 내용 무시 |
각각의 함수의 개념은 이렇고 이해하기 쉽도록 코드로 알아보도록 하겠습니다.
#include <iostream>
using namespace std;
int main() {
int num;
while (1) {
cout << ">> 정수 입력: ";
cin >> num;
if (cin.fail() == 0) {
cout << "정수가 정상적으로 입력되었습니다." << endl;
cout << "정수: " << num <<endl;
}
else {
cout << "문자가 입력되었습니다." << endl;
}
cin.clear();
cin.ignore(256, '\n');
cout << endl;
}
}
cin.fail() 함수로 정수가 들어왔는지 문자가 들어왔는지 확인합니다.
다음, 문자가 들어왔을 경우 대비하기 위해 cin.clear() 함수와 cin.ignore 함수를 넣어줍니다.
cin.clear()는 cin.fail()의 값을 비워주고
cin.ignore()는 버퍼 안에 있는 내용을 무시하기 위해 사용되었습니다.
cin.ignore()의 256과 '\n'의 의미는 무시할 문자의 최대 길이와 종료 문자를 의미합니다.
C++ 포스팅 마치겠습니다.