728x90
입력함수 : cin(), getline() and cin.ignore()
- C++의 입력 함수
- 입력버퍼를 비우는데 사용하는 cin.ignore()
cin()
- <iostream> 헤더에 정의되어 있다.
- 표준 입력 버퍼에서 공백 혹은 개행 문자(\n) 이전 까지의 값만을 받아들인다.
-
연산자를 사용하여 공백이 포함된 문자열을 입력 받을 경우, 공백 전의 문자만 입력된다는 단점이 존재한다.
- 공백이 포함된 문자열을 입력받으려면 getline() 함수를 사용해야한다.
getline()
- 다음과 같은 2가지로 나누어진다.
- <istream>라이브러리에 속하는 cin.getline()
- <string> 라이브러리에 속하는 getline()
<istream> cin.getline()
cin.getline(변수 주소, 최대 입력 수, 제한자);
- C 형식 문자열 방식인 마지막 글자에 ‘NULL(\0)’ 문자가 포함된 문자 배열을 받는데 사용한다.
- N-1개의 문자를 읽어와서 문자형 배열에 저장하고, 마지막 문자는 자동으로 NULL로 바꾼다.
- 세 번째 인자 delim(제한자) 직전까지 읽어서 문자형 배열에 저장한다.
- 제한자를 별도로 지정하지 않으면 개행문자(\n)로 인식한다.
<string> getline()
getline(입력 스트림, string 객체, 구분자);
- 지정한 구분자(Delimiter)를 만날 때까지 문자열을 입력받아 string객체에 저장한다.
- 구분자는 따로 지정해주지 않아도 된다.
cin.ignore() 함수 사용하기 전 참고사항
- cin으로 입력받을 경우, 버퍼에 ‘\n’이 남는다.
- cin 다음 입력을 cin으로 받을 경우, 전 버퍼에 있던 공백 및 개행문자를 무시하기 때문에 없다.
- cin 다음 입력을 getline 으로 받을경우, 전 버퍼에 있던 공백 및 개행문자를 포함해서 입력받기 때문에 버퍼를 지워주는 작업이 필요하다.
- getline 다음 입력을 getline 으로 받을경우, getline은 ‘\n’ 문자를 버퍼에 포함시키기 않기 때문에 버퍼를 비워줄 필요가 없다.
728x90
'언어 > C++' 카테고리의 다른 글
unique함수와 erase함수를 통한 문자열 중복제거 (0) | 2024.02.22 |
---|---|
정렬Sort() (0) | 2024.02.21 |
constexpr 함수 (0) | 2024.02.17 |
String::find() 문자열에서 특수 문자 찾기 (1) | 2024.02.17 |
삼항 연산자 (0) | 2024.02.14 |