cin으로 방어적 프로그래밍

2019. 10. 31. 16:15PL/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