개발/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::cin
과 std::getline()
을 같이 사용할 경우, std::cin
을 하고 std::getline()
이 실행되게 되면 cin에서 입력한 개행이 버퍼에 남아있어 getline() 함수가 그 개행을 받아버린다. 따라서 std::cin
을 한 이후 개행을 지워줘야 하는데, 그 때 사용하는 함수가 바로 std::cin.ignore(32767, '\n');
이다.
개행을 무시하는 함수인데, 앞의 32767
은 cin::ignore()
함수가 무시할 문자 수다. 이 숫자는 모든 플랫폼에서 2-byte 정수의 가장 큰 값이다.