본문 바로가기
Programming/C++ - 백준

[백준] 11718번 : 그대로 출력하기 - (C++)

by 지구코드 2023. 4. 10.
반응형


문제


풀이

cin은 공백 이전까지만 입력을 받으므로, 공백을 포함한 입력은 받을 수 없다. 따라서, getline 함수를 이용한다.


코드

#include <iostream>
#include <string>
using namespace std;

int main(){
    string str;
    
    while (true){
        getline(cin, str);
        if (str == ""){
            break;
        }
        cout << str << endl;
    }
}

개념

- getline 함수: istream 라이브러리의 cin.getline 함수와 string 라이브러리 getline 함수가 있다.

 


→ istream 라이브러리의 cin.getline() 함수

 

cin.getline(char* str, streamsize n);
cin.getline(char* str, streamsize n, char dlim);

 

  •  cin.getline(변수 주소, 최대 입력 가능 문자 수, 제한자)
  •  char*형의 문자열을 받을 경우에 사용 가능, string 형을 사용하면 오류 발생
  •  문자열의 끝에는 NULL 문자인 '\0'이 자동 삽입된다.
  •  n-1개의 문자 개수만큼 str에 저장되며, n번째 문자는 NULL('\0')로 바뀐다.
  •  예를 들어, n이 5이고, 0, 1, 2, 3, 4을 입력한다면, 0부터 3까지 str에 저장된다. str[4]에는 '\0'이 들어간다.
  •  dlim(제한자)을 지정한다면, dlim 문자 직전까지 읽어 str에 저장한다.
  •  별도로 dlim을 지정하지 않는다면, 개행문자(줄바꿈, '\n')로 인식한다.

 

 

string 라이브러리의 getline() 함수

 

getline(istream& is, string str);
getline(istream& is, string str, char dlim);

 

  • getline(입력스트림, string 객체, 구분자)
  •  string형을 받을 경우에 사용 가능, 공백이 포함된 문자열을 입력받을 수 있다.
  •  최대 문자 수를 입력하지 않아도 되며, 지정한 dlim(구분자)까지 문자열을 입력받아 string에 저장한다.
  •  주의사항: 표준 입력 버퍼에 개행문자 '\n'이 남아있기 때문에, getline() 함수 앞에 cin.ignore() 함수를 이용해 버퍼를 비워주어야 한다.

 


결과

 

 

11718번: 그대로 출력하기

입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄은 주어지지 않는다. 또, 각 줄은 공백으로 시

www.acmicpc.net

 

반응형

댓글