• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

std::cin.ignore(32767, '\n')과 numeric_limits 에서 이런 방법은 어떤가요?

20.10.16 07:40 작성 조회수 717

0

<첫번째 질문>

(1) std::cin.ignore(32767, '\n');

(2) std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

1번은 매직넘버를 쓰기 때문에 좋지 못한 코드이고,

2번은 <limits> 를 #include 해야 하고, 길어서 타이핑이 불편합니다.

\n을 만날때까지 최대 32767 개 의 글자를 무시해라 라는 의미라면

ignore의 첫번째 매개변수에는 어떤 자료형의 signed 최대값이 인자로 들어가는구나 생각할 수 있습니다.

그 첫번째 인자로 INT_MAX 나 CHAR_MAX 같은 것을 사용하는건 어떻게 생각하시나요?

<두번째 질문>

INT_MAX 에는 2147483647 / CHAR_MAX에는 127 값이 들어있습니다.

제 생각엔 INT는 너~~무 많고(낭비), CHAR은 좀... 적은것 같습니다. 좀 더 넓었으면 좋겠습니다.

그렇다면 매직넘버를 사용하는 대신,

Short 자료형의 최대값인 32767을 short 변수를 만들어 저장한 뒤,

ignore함수의 첫번째 인자로 넣어주는 것 입니다.

위의 두 가지 방법에 대해서는 어떻게 생각하시나요?

답변 1

답변을 작성해보세요.

1

Hello Yeo님의 프로필

Hello Yeo

2020.10.16

안녕하세요?
두 가지 방법 모두 고려해볼만한 방법이라 생각합니다.
변수명은 목적에 맞게 바꾸시는 것도 좋겠네요.