개발/TIL

2021.01.31

ash_ 2022. 2. 2. 18:30

CPP00 / ex01

std::cin

c++ 에서 표준입력을 받을때 사용하는 함수. <iostream> 에 정의되어 있다.

하지만 std::cin 으로 입력받을 때는 space 까지만 입력되므로, 공백을 포함한 string 형식의 입력을 받을 때는 getline() 함수를 사용해야 한다.

 

std::getline()

getline() 함수는 std::cin 의 멤버함수인 std::cin.getline() 함수와 <string> 에 정의되어있는 std::getline() 함수가 있다.

오늘 사용한 함수는 std::getline() 함수였는데, 아래와 같이 사용된다.

std::getline(std::cin, firstName[i]);

이처럼 작성하면 firstName[i] 에 표준입력으로 개행까지 받을 수 있다. 원래는 매개변수가 3개로, 마지막에는 마지막 문자를 매개변수로 넣는데 넣지 않으면 디폴트로 마지막 문자를 개행으로 받게 된다.

 


 

그런데 함수에서 std::cinstd::getline() 을 같이 사용할 경우, std::cin을 하고 std::getline() 이 실행되게 되면 cin에서 입력한 개행이 버퍼에 남아있어 getline() 함수가 그 개행을 받아버린다. 따라서 std::cin 을 한 이후 개행을 지워줘야 하는데, 그 때 사용하는 함수가 바로 std::cin.ignore(32767, '\n'); 이다.

개행을 무시하는 함수인데, 앞의 32767cin::ignore() 함수가 무시할 문자 수다. 이 숫자는 모든 플랫폼에서 2-byte 정수의 가장 큰 값이다.