공백 포함 문자열 입력받기

getline 함수로 공백 포함 한 줄을 모두 입력받기

getline 함수는 입력 스트림에 있는 문자를 읽다가 어떤 구분 문자EOF(End Of File)를 만나면 그 문자를 스트림에서 버리고 함수를 종료합니다.

구분 문자는 디폴트로 개행 문자(‘\n’)가 설정되어 있으며, 따로 전달인자로 원하는 문자를 설정할 수도 있습니다.

#include <iostream>
using namespace std;

int main(){
    string a;
    getline(cin,a); // "hi hello"입력
    cout << a << '\n'; // "hi hello"출력

    geline(cin,a,' ') // "hi hello"입력
    cout << a; // "hi"출력
}

주의할 점은 getline 전에 입력 받은 문자가 입력 스트림에 남아있는 경우 입니다.

입력 스트림에 구분 문자가 남아있다면 getline은 새로 입력을 받지 않고 입력스트림에 남아있는 구분 문자를 읽고 종료됩니다.

예를 들어 cin » a; getline(cin,a); 를 한다면 cin이 공백 전까지의 문자열을 입력받고 종료되기 때문에 입력스트림에 getline의 구분문자인 ‘\n’이 남아있어 새로 입력을 받지 않고 종료합니다.

#include <iostream>
using namespace std;
int main(){
    string a;
    cin >> a; "hi hello"
    cout << a << '\n'; // "hi"
    getline(cin,a); // 새로 입력을 받지 않음
    cout << a << '\n'l // " hello"
}

getline함수는 주로 공백을 포함한 문자열을 입력 받고 싶을 때 많이 사용됩니다.


© 2018. All rights reserved.

Powered by Hydejack v8.5.2