[백준 11721][🤎2] 열 개씩 끊어 출력하기 (입출력)

Date:     Updated:

카테고리:

태그:

열 개씩 끊어 출력하기

11721번 문제 👉 https://www.acmicpc.net/problem/11721

난이도 👉 브론즈 2

내 풀이

#include <iostream>
using namespace std;

int main()
{
    char buf[11]; 
    
    while(true)
    {
        cin.get(buf, 11);
        if (!cin.gcount())
            break;
        cout << buf << endl;
    }
    
    return 0;
}
  • gcount()가 0 이면, 즉 입력 버퍼에 이제 읽어들일게 아무것도 없으면 반복 종료.
  • 첫 번째 반복
    • 입력 👉 OneTwoThreeFourFiveSixSevenEightNineTen
    • 버퍼 👉🏻 OneTwoThreeFourFiveSixSevenEightNineTen\n
    • cin.get(buf, 11);
      • buf 👉🏻 OneTwoThre\0
    • cin.gcount()
      • 10
  • 두 번째 반복
    • 버퍼 👉🏻 eFourFiveSixSevenEightNineTen\n
    • cin.get(buf, 11);
      • buf 👉🏻 eFourFiveS\0
    • cin.gcount()
      • 10
  • 세 번째 반복
    • 버퍼 👉🏻 ixSevenEightNineTen\n
    • cin.get(buf, 11);
      • buf 👉🏻 ixSevenEig\0
    • cin.gcount()
      • 10
  • 네 번째 반복
    • 버퍼 👉🏻 htNineTen\n
    • cin.get(buf, 11);
      • buf 👉🏻 htNineTen\0\0
    • cin.gcount()
      • 9
  • 다섯 번째 반복
    • 버퍼 👉🏻 비어있음! 아무것도 없어
    • cin.gcount()
      • 0
      • 반복 종료

cin.get

입력 버퍼로부터 문자 딱 하나를 읽어들인다.

  • 공백도, 개행 문자도 모두 입력으로 포함된다.
    • cin은 개행 문자나 공백이 나오면 입력 종료로 간주한 반면에 cin.get은 개행 문자, 공백 또한 입력 받을 문자로 간주하여 저장한다.
      • 문자 딱 1개만 읽어들일땐 개행 문자도 문자로서 읽어들이고
      • 읽어들일 문자 개수를 인수로 넘겨 문자열로 받을때는 개행문자전까지만 받되 개행 문자는 그냥 읽고 버린다. 무시함.
    • 따라서 cin.get() 하여 버퍼에 남아있는 개행 문자를 비워줄 수도 있다.
  • 인수 (cin.get() 없어도 된다.)
    1. 읽어서 저장할 char 포인터
    2. 읽어들일 문자 개수 n
      • 여러개 읽어 들이니 문자열을 만들 수 있음.
      • 문자열 끝에 \0가 붙을 것도 고려해서 n - 1 개의 문자만 읽어들인다.
      • 자동으로 문자열 끝에 \0를 붙여준다.
    3. 제한자
      • 디폴트로 \n 즉, 디폴트로는 \n전까지만 읽어들임.
      • \n문자열에 포함되지 않으며 읽고 버린다.


cin.gcount

마지막 입력 작업에서 읽어들인 문자의 개수를 리턴한다.



🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

BOJ 카테고리 내 다른 글 보러가기

댓글 남기기