언어/C++

입력함수 : cin(), getline() and cin.ignore()

에린_1 2024. 2. 21. 14:39
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