본문 바로가기

알고리즘/BOJ

[C/C++] 문자 입력 함수 정리

C

 

1. getchar() // int getchar(void)

 

  • <stdio.h> 내부에 존재
  • 표준 입력 스트림에서 문자 하나를 읽어올 때 사용
  • 키보드 버퍼(stdin)로부터 공백(' ')이나 개행문자('\n') 또한 입력을 받으니 주의해서 사용해야한다.
  • 만일 파일 끝에 도달하거나, 읽기 오류가 발생한다면 함수는 EOF를 return

2. getc() // int getc(FILE* stream)

  • getcar() 함수와 기능적으로 동일하게 작동한다!

3. getch(), getche() // int getch(void), int getche(void)

  • <conio.h> 내부에 존재
  • 키보드 버퍼를 사용하지 않고 바로 출력을 내보낸다
  • Enter 값을 인식할 때 getch()와 getche()는 '\r'로 인식한다.
  • getche()는 getch()와 동일하지만 입력 값을 화면에 출력한다는 차이점이 있다.

4. gets_s() // char* gets_s(char* buf, size_t size);

  • <stdio.h> 내부에 존재
  • 표준 입력 스트림의 버퍼(stdin)에서 문자열을 읽어오는 함수
  • 공백(' ')을 포함한 문자열을 입력받을 수 있다.
  • char 배열의 마지막 원소에는 '\0'을 입력시키므로 size-1 글자만 입력 가능하다.
  • 입력에 성공하면 문자열을 return, 실패하면 NULL을 return

C++

 

1. cin.get()

  1) int get();

    표준 입력 스트림에서  문자 한 개를 가져온 뒤, 그 값은 return (int로 형변환)

  2) istream& get(char& c);

    표준 입력 스트림에서 문자 한 개를 가져온 뒤, c에 저장한다.

  3) istream& get(char*s, streamsize n);

    표준 입력 스트림에서 문자들을 가져온 뒤, s에 C형식 문자열(char 배열)로 저장한다.

    문자는 제한 문자 '\n'이 나올 때까지나, n-1개의 문자를 받을 때까지 입력받게 된다. (맨 마지막에는 자동 널 문자 1개가 입력

    또한 이 함수는 제한 문자는 스트림에서 빼내지 않기 때문에 제한 문자를 빼내기 위해서는 getline 함수 사용.

  4) istream& get(streambuf& sb);

    표준 입력 스트림에서 문자들을 받은 뒤, 이를 스트림 버퍼 sb에 입력한다.

    문자는 제한 문자 '\n'이 나올 때까지나, 파일 끝(EOF)에 도달할 때까지 입력받는다.

  5) istream& get(streambuf& sb, char delim);

    위와 동일하지만, 제한 문자를 사용자가 임의로 지정할 수 있다.

 

2. cin.getline() // istream& getline(char* s, streamsize n, char delim);

  • <iostream> 내부에 존재
  • 문자열을 입력받을 때 사용한다.
  • 공백(' '), 개행문자('\n')를 포함하여 입력받을 수 있다.
  • 제한 문자(delim, default는 '\n')가 나올 때까지, n-1개의 문자를 받을 때까지 입력받게 된다. (맨 마지막에는 자동 널 문자)
  • getline()과 다른 함수이다!
getline() // istream& getline(istream& is, string& str, char delim);

1. <string> 내부에 정의
2. 첫번째 매개변수에 따라 파일입력을 받을지 표준입력을 받을지 결정
3. 두번째 매개변수는 문자열을 저장할 string형 변수 명
4. 세번째 매개변수는 제한 문자 (defalut는 '\n') 
5. 맨 마지막에 NULL 문자가 저장이 되지 않는다!

'알고리즘 > BOJ' 카테고리의 다른 글

[C++] 백준 11656번 - 접미사 배열  (0) 2020.03.30
[C++] 백준 11655번 - ROT13  (0) 2020.03.30
[C++] 백준 11004번 - K번째 수  (0) 2020.03.29
[C++] 백준 11652번 - 카드  (0) 2020.03.29
[C++] 백준 10989번 - 수 정렬하기 3  (0) 2020.03.29