[백준 11721][🤎2] 열 개씩 끊어 출력하기 (입출력)
카테고리: BOJ
태그: Coding Test Cpp Algorithm
열 개씩 끊어 출력하기
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
- buf 👉🏻 OneTwoThre
cin.gcount()
- 10
- 두 번째 반복
- 버퍼 👉🏻 eFourFiveSixSevenEightNineTen
\n
cin.get(buf, 11);
- buf 👉🏻 eFourFiveS
\0
- buf 👉🏻 eFourFiveS
cin.gcount()
- 10
- 버퍼 👉🏻 eFourFiveSixSevenEightNineTen
- 세 번째 반복
- 버퍼 👉🏻 ixSevenEightNineTen
\n
cin.get(buf, 11);
- buf 👉🏻 ixSevenEig
\0
- buf 👉🏻 ixSevenEig
cin.gcount()
- 10
- 버퍼 👉🏻 ixSevenEightNineTen
- 네 번째 반복
- 버퍼 👉🏻 htNineTen
\n
cin.get(buf, 11);
- buf 👉🏻 htNineTen
\0\0
- buf 👉🏻 htNineTen
cin.gcount()
- 9
- 버퍼 👉🏻 htNineTen
- 다섯 번째 반복
- 버퍼 👉🏻 비어있음! 아무것도 없어
cin.gcount()
- 0
- 반복 종료
cin.get
입력 버퍼로부터 문자 딱 하나를 읽어들인다.
- 공백도, 개행 문자도 모두 입력으로 포함된다.
cin
은 개행 문자나 공백이 나오면 입력 종료로 간주한 반면에cin.get
은 개행 문자, 공백 또한 입력 받을 문자로 간주하여 저장한다.- 문자 딱 1개만 읽어들일땐 개행 문자도 문자로서 읽어들이고
- 읽어들일 문자 개수를 인수로 넘겨 문자열로 받을때는 개행문자전까지만 받되 개행 문자는 그냥 읽고 버린다. 무시함.
- 따라서
cin.get()
하여 버퍼에 남아있는 개행 문자를 비워줄 수도 있다.
- 인수 (
cin.get()
없어도 된다.)- 읽어서 저장할
char
포인터 - 읽어들일 문자 개수 n
- 여러개 읽어 들이니 문자열을 만들 수 있음.
- 문자열 끝에
\0
가 붙을 것도 고려해서 n - 1 개의 문자만 읽어들인다. - 자동으로 문자열 끝에
\0
를 붙여준다.
- 제한자
- 디폴트로
\n
즉, 디폴트로는\n
전까지만 읽어들임. \n
은 문자열에 포함되지 않으며 읽고 버린다.
- 디폴트로
- 읽어서 저장할
cin.gcount
마지막 입력 작업에서 읽어들인 문자의 개수를 리턴한다.
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글 남기기