[백준 11718][🤎3] 그대로 출력하기 (입출력)
카테고리: BOJ
태그: Coding Test Cpp Algorithm
그대로 출력하기
11718번 문제 👉 https://www.acmicpc.net/problem/11718
난이도 👉 브론즈 3
내 풀이
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str;
for(int i = 0; i < 100; i++)
{
getline(cin, str);
cout << str << endl;
}
return 0;
}
string
의getline
을 사용했다.- 매 반복마다 버퍼로부터 '\n'을 기준으로 끊어서 읽어들여 str에 저장한다.
getline
은 ‘\n’을 버퍼에 남기지 않는다. 그냥 무시할뿐!
getline
\n
개행 문자(엔터)가 나올 때까지 공백, 띄어쓰기 포함하여 문자들을 다 읽어들인다.- 즉 한 줄을 통째로 읽어 들인다.
\n
이 디폴트 값이며 제한자를 다른 걸로 바꿀 수도 있다.
istream의 getline
istream::cin 의
getline
istream & getline (char * s, streamsize n, char delim); // delim 디폴트 값은 '\n'
- 끝에 ‘\0’이 붙는
char *
형식의 C 언어 스타일 문자열에 입력하는 방식이다. - 즉 인수가
char *
포인터 형식이다. - 끝에 ‘\0’을 저장해주어야 해서 ‘\0’이 붙는 것도 고려해야 한다. 따라서 실 문자 개수는 n-1개가 들어가게 된다.
- n-1개의 문자를 읽어들인다.
// 콘솔 입력 : cin.getline
char str[100];
cin.getline(str, 10);
// 파일 입력 : ifstream 객체에서 getline 호출
char str[100];
ifstream ifs;
ifs.open("input.txt");
ifs.getline(str, 50);
string의 getline
string 의
getline
istream & getline (istream & is, string & str, char delim); // delim 디폴트 값은 '\n'
- 입력 스트림이 첫번재 인자로 오고 두번째 인자로는 string 객체를 받는다.
string
형식의 C++ 언어 스타일 문자열에 입력하는 방식이다.- 인수로
char *
포인터 형식을 넣어줘선 안된다! cin.getline
과 달리 읽어들일 문자의 개수를 지정하는건 없다.
// 콘솔 입력
string str;
getline(cin, str);
// 파일 입력
string str;
ifstream ifs;
ifs.open("input.txt");
getline(ifs, str);
std::cin 과의 차이
getline
은 string이든 cin이든 둘 다 해당
cin
은 공백, 탭, 엔터를 기준으로 나누어 읽어들인다. 반면에getline
은 오직 엔터\n
을 기준으로 읽어들인다.cin
은 공백, 탭, 엔터를 버퍼에 남긴다. 반면에getline
은 엔터까지 읽어들이면서 엔터를 버퍼에 남기지 않는다. 버퍼에 남기지 않고 그냥 버린다!
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글 남기기