728x90

cin.ignore()

  • cin.ignore() 함수는 입력 버퍼를 자동으로 비우도록 설정하기 위해 사용된다.
  • C 언어의 fflush(stdin) 함수와 비슷한 역할을 수행한다.

 

사용 예

#include <iostream>
#include <string>
using namespace std;

int main() {
    int val;
    string str;
    
    cin >> val;
    getline(cin, str);
    
    cout << val << str << endl;
}
1
1

 

  • 위의 예시 코드를 실행해 보면 예상과 달리 입력받은 정수만 출력되고 프로그램이 종료된다. 이런 현상이 발생하는 이유는 표준 입력 버퍼 개행문자(\n)가 남아 있기 때문이다.
  • getline() 코드 앞에 cin.ignore() 함수로 버퍼를 비워(Clear)주면 이 문제가 해결된다.
#include <iostream>
#include <string>
using namespace std;

int main() {
    int val;
    string str;
    
    cin >> val;
    cin.ignore();    // Clear Buffer
    
    getline(cin, str);
    
    cout << val << str << endl;
}
1
astra
1astra

 

  • cin.clear() 함수 또한 사용할 수 있지만, 이 함수는 입력 버퍼를 비우는 것이 아닌 stream을 good state로 돌려주는 함수이다. 따라서 버퍼를 명확하게 비우기 위해 cin.ignore() 함수를 사용하는 것이 권장된다.

 

728x90