반응형
문제
풀이
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() 함수를 이용해 버퍼를 비워주어야 한다.
결과
반응형
'Programming > C++ - 백준' 카테고리의 다른 글
[백준] 11720번 : 숫자의 합 | 아스키코드 (C++) (0) | 2023.04.11 |
---|---|
[백준] 11719번 : 그대로 출력하기 2 - (C++) (0) | 2023.04.11 |
[백준] 11022번 : 'A+B - 8' - (C++) (0) | 2023.04.09 |
[백준] 11021번 : 'A+B - 7' - (C++) (0) | 2023.04.08 |
[백준] 10953번 : 'A+B - 6' - (C++) (0) | 2023.04.08 |
댓글