C언어에서 표준 입력 함수 scanf를 썼듯이, C++에서는 cin을 사용한다.
cin은 scanf 와 달리 변수와 입력이 맞지 않으면 입력이 되지 않고, cin 의 return 값으로 체크할 수 있다.
출력 결과
k <- 입력 107 3 <- 입력 3 2 <- 입력 2 k <- 입력 0 |
scanf로는 int 형 변수에 char가 들어가지만, cin으로는 들어가지도 않고 cin이 false를 retrun한다. 유사하게 cin.fail() 함수는 입력 실패시 true를 리턴한다.
cin.clear() 는 이 에러 플래그를 지우는 역할을 한다.
cin 과 string 변수
cin >> string 변수를 할 경우 띄어쓰기 전 까지만 들어가게 된다. 따라서 띄어쓰기를 포함한 문장 한 줄을 넣고 싶다면 getline(cin, string 변수) 를 이용해야 한다.
출력 결과
Hello world again! <- 입력 문자열 str1: Hello str2: world again! |
이때 말한 대로 getline을 이용할 경우 띄어쓰기를 포함하여 string 변수에 입력이 되지만, 처음에 입력한 "Hello world again!"에서 str1 에 들어간 이후부터 자동으로 입력이 되어 버린다. 이를 막기 위해서는 C에서 fflush 처럼 입력버퍼를 비워줄 필요가 있다.
cin.ignore(int n, char c)는 n byte 만큼 또는 c 문자를 만날때까지 버퍼를 지운다.
Hello world again! <- 입력 str1: Hello Hello world again! <- 입력 str2: Hello world again! |
'프로그래밍 > C++' 카테고리의 다른 글
인라인 함수 (0) | 2017.10.08 |
---|---|
함수 오버로딩 (0) | 2017.10.08 |
디폴트 파라미터 (0) | 2017.10.08 |
printf 형식지정자 (0) | 2017.10.03 |
표준 출력 cout (0) | 2017.08.06 |