cin으로 방어적 프로그래밍
2019. 10. 31. 16:15ㆍPL/C++
프로그램을 만들 때 사용자의 입장에서 생각해야 한다. 사용자가 입력 범위를 벗어나도, 프로그램을 종료하지 않고 경고 메세지를 띄우거나 따른 조치를 취해야만 한다
1. 하나의 입력에서 여러 데이터를 입력해서 버퍼에 남아있을 때
- cin.ignore은 버퍼를 비워주는 행위로, (비워야하는 최대 사이즈, delimeter)로 최대 사이즈에서 마지막으로 delimeter를 만날 때까지 비워주게 된다
2. 입력 범위를 초과하는 값을 입력했을 때
- cin.fail로 검사할 수 있으며, 위 조건을 만족했을 시 true를 반환한다
#include <iostream>
using namespace std;
int main(void) {
int x, y;
char op;
cin >> x;
cin.ignore(32767, '\n');
cin >> op;
cin >> y;
if (cin.fail()) {
cout << "input exceeds int_max\n";
}
else {
if (op == '+') {
cout << x + y << '\n';
}
else {
cout << x - y << '\n';
}
}
return 0;
}
[참고] 인프런, 따라하면서 배우는 C++ 홍정모
'PL > C++' 카테고리의 다른 글
포인터 배열과 배열 포인터 (0) | 2019.11.13 |
---|---|
malloc/free와 new/delete 차이 (0) | 2019.11.12 |
std::array와 std::vector 차이 (0) | 2019.10.30 |
디버깅으로 쓰이는 assert (0) | 2019.10.30 |
char *과 const char * (0) | 2019.10.25 |