일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- flutter #app #취준
- 유데미 #udemy #웅진씽크빅 #스나이퍼팩토리 #인사이드아웃 #미래내일일경험 #프로젝트캠프 #부트캠프 #react #리액트프로젝트 #프론트엔드개발자양성과정 #개발자교육과
- baekjoon #백준 #boj
- flutter #git
- 백준 #boj #baekjoon
- 플러터 #flutter #restful #rest api
- VS #비주얼스튜디오
- git #unity #깃허브
- unity #2d-game
- flutter #firebase #플러터 #파이어베이스 #연동
- boj #c++
- flutter #플러터 #분석
- Flutter
- flutter #todolist
- 백준
- flutter #플러터
- firebase #파이어베이스
- 인턴 #프론트엔드 #개발자 #프론트엔드개발자 #취준
- boj #baekjoon
- #유데미 #udemy #웅진씽크빅 #스나이퍼팩토리 #인사이드아웃 #미래내일일경험 #프로젝트캠프 #부트캠프 #react #리액트프로젝트 #프론트엔드개발자양성과정 #개발자교육과정
- 백준 #c++
- flutter #깃
- 로컬저장소 #이름변경
- baekjoon #boj #c++
- 비주얼 스튜디오 #vs #visual studio
- boj #baekjoon #c++
- flutter #상태관리
- unity #2d-game #minigame #vscode
- 백준 #boj
- 비주얼스튜디오 #코드스니펫
- Today
- Total
cococo-coding
4470번. 줄번호(c++풀이) - getline(), ignore() 함수 사용법 본문
4470번. 줄번호(c++풀이) - getline(), ignore() 함수 사용법
_dani 2024. 1. 11. 19:30문제
풀이
문제자체는 간단하나, ignore() 와 같은 함수를 알지 못하면 계속 틀릴 수 있다.
1. 줄의 수 n을 입력받는다. 이때 ignor()함수로 남아있는 버퍼를 지워준다.
2. for문을 이용해 str을 입력받는다. 이때 str은 공백이 포함되어 있는 문자열이므로 getline()을 이용한다.
3,4. for문에서 사용한 i를 줄 번호로 이용하고, 뒤에 str을 출력한다.
포인트
cin.ignore();을 꼭 써준다.
cin >> n; 에서 n을 입력하게 되면 표준입력버퍼에 개행문자(=\n)가 남아있게 된다. 이를 지워주는 역할을 한다.
만약 cin.ignore(); 코드가 없다면 아래와 같이 "1. " 만 출력이 된다.
getline() 함수 앞에서 ignore() 함수가 버퍼를 비워주는 역할을 해야 정상적인 출력이 나온다.
cin.ignore() 특징
1. cin으로 입력받는 경우 버퍼에 '\n'이 남는다.
2. cin 다음 입력이 cin인 경우는 전 버퍼에 있는 공백 및 개행문자를 무시하므로 버퍼를 안 비워도 된다.
3. cin 다음 입력이 getline인 경우는 전 버퍼에 있는 공백 및 개행문자가 남아있으므로 버퍼를 지워줘야 한다.
4. getline 다음 입력이 getline인 경우는 버퍼를 안 지워도 된다. (getline은 '\n'을 버퍼에 포함시키지 않으므로)
-> 1번, 3번의 경우는 ignore()로 버퍼를 지워줘야 한다.
**출처: 별의 블로그 :: [C++] 입력 함수 : cin(), getline() (and cin.ignore()) (tistory.com)
정리가 굉장히 잘 되어있어서 문제를 푸는데 많은 도움을 받았다. 다들 참고하시면 좋을 것 같다.
코드
#include <iostream>
#include <string>
using namespace std;
/*
1. 줄의 수 n을 입력받는다.
2. 각 줄마다 문장을 입력받는다.
3. 문장마다 줄 번호를 추가한다.
4. 줄 번호가 추가된 문장을 출력한다.
*/
int main() {
//1
int n;
cin >> n;
cin.ignore(); //표준입력버퍼에 개행문자(\n)를 지워주는 역할
//ignore()을 안 쓰면 이 코드에서 n만 입력되고 str을 입력받지 않았는데
//1. 만 출력되는 현상이 발생함.
//2
for(int i=1; i<=n; i++){
string str;
getline(cin, str);
//3,4
cout << i << ". " << str << endl;
}
return 0;
}
'[BOJ] 코드 모음 > C++_learning 문제집' 카테고리의 다른 글
10820번. 문자열 분석 (c++ 풀이) (2) | 2024.01.13 |
---|---|
2789번. 유학 금지 (c++ 풀이) (0) | 2024.01.12 |
5523번. 경기 결과 (c++풀이) (0) | 2024.01.11 |
10867번. 중복 빼고 정렬하기 (c++풀이) (0) | 2024.01.11 |
5598번. 카이사르 암호 (c++풀이) (0) | 2024.01.11 |