Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++에서 getline()으로 빈 줄과 개행 문자 처리하는 방법

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()과 간단한 길이 검사 조건을 조합하면, 입력 스트림에 포함된 빈 줄이나 불필요한 개행 문자를 손쉽게 필터링할 수 있습니다. 이 기법은 콘솔 기반 입력 처리, 파일 파싱 등 다양한 상황에서 유용하게 활용할 수 있으니 꼭 기억해 두시기 바랍니다.