C++/Library
2021. 3. 10. 21:11
입력 버퍼 무시하기
cin.ignore(_Count, _Metadelim)
_Count
: 무시할 문자의 최대 개수(바이트)기본 값은 1
정석대로라면
<limits>
라이브러리의std::numeric_limits<std::streamsize>::max()
를 사용하는게 맞으나... 귀찮으므로 보통 적당히 큰 수를 채택하는 것 같다.
_Metadelim
: 이 문자가 나올 때까지 무시한다.(해당 문자 포함)- 기본 값은
eof
- 기본 값은
#include <iostream>
int getInt()
{
while (true)
{
int x;
std::cout << "Enter an integer number : ";
std::cin >> x;
if (std::cin.fail())
{
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cout << "Invalid number, please try again\n";
}
else
{
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
return (x);
}
}
}
char getOperator()
{
while (true)
{
char op;
std::cout << "Enter an operator (+, -) : ";
std::cin >> op;
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
if (op == '+' || op == '-')
return (op);
else
std::cout << "Invalid Operator, please try again" << std::endl;
}
}
void printResult(int a, char op, int b)
{
if (op == '+') std::cout << a + b << std::endl;
else if (op == '-') std::cout << a - b << std::endl;
else std::cout << "Invalid operator" << std::endl;
}
int main()
{
using namespace std;
int a = getInt();
char op = getOperator();
int b = getInt();
printResult(a, op, b);
}
'C++ > Library' 카테고리의 다른 글
C++ cin.ignore (0) | 2021.03.11 |
---|---|
C++ cin (0) | 2021.03.11 |
C++ 난수 생성 (Random Number Generation) (0) | 2021.03.11 |
C++ typeinfo (0) | 2021.03.10 |
C++ 출력 버퍼 비우기 (0) | 2021.03.10 |