C++에서 getline() 함수는 스트림으로부터 한 줄씩 데이터를 읽어올 때 사용합니다. 이 함수는 사용자가 엔터 키를 누르거나 지정한 구분자(delimiter)가 나타날 때까지 입력을 받습니다. 하지만 실제 프로그래밍에서는 입력 사이에 빈 줄이 포함되는 경우가 종종 발생하며, 이러한 개행 문자나 빈 줄을 어떻게 처리해야 할지 고민하게 됩니다.
이번 글에서는 getline() 함수를 활용하여 빈 줄을 건너뛰고 유효한 입력만 처리하는 방법을 알아보겠습니다.
getline()으로 빈 줄 건너뛰기
핵심 아이디어는 간단합니다. getline()으로 읽은 문자열의 길이가 0이라면, 즉 빈 줄이라면 유효한 입력이 들어올 때까지 반복해서 다시 읽으면 됩니다. 다음 예제 코드를 통해 확인해 보겠습니다.
예제 코드
#include<iostream>
using namespace std;
int main() {
string str;
int term = 4;
while (term--) {
getline(cin, str);
while (str.length()==0 )
getline(cin, str);
cout << str << " : New Line" << endl;
}
}실행 결과
Hello Hello : New Line World World : New Line This is This is : New Line C++ Language C++ Language : New Line
코드 설명
위 코드의 동작 방식을 단계별로 살펴보겠습니다.
1. 외부 while 루프: 변수 term을 4로 초기화하고, while (term--)을 통해 총 4번의 유효한 입력을 처리합니다.
2. 첫 번째 getline() 호출: getline(cin, str)이 한 줄을 읽어옵니다. 만약 사용자가 엔터 키만 눌러 빈 줄을 입력했다면, str에는 빈 문자열이 저장됩니다.
3. 내부 while 루프: str.length()==0 조건을 검사하여 문자열이 비어 있는 경우 계속해서 getline()을 호출합니다. 이렇게 하면 빈 줄은 모두 무시되고, 실제 내용이 있는 줄만 str에 남게 됩니다.
4. 결과 출력: 유효한 문자열에 ": New Line"을 붙여 화면에 출력합니다.
마무리
이처럼 getline()과 간단한 길이 검사 조건을 조합하면, 입력 스트림에 포함된 빈 줄이나 불필요한 개행 문자를 손쉽게 필터링할 수 있습니다. 이 기법은 콘솔 기반 입력 처리, 파일 파싱 등 다양한 상황에서 유용하게 활용할 수 있으니 꼭 기억해 두시기 바랍니다.