본문 바로가기
📊알고리즘/이론

[C++] 개행문자 기준으로 입력 받기

by meteorfish 2023. 6. 4.
728x90

알아두어야 할 내용

- getline()은 표준입력 버퍼에 "\n"(계행문자)를 남기지 않는다!

 

사용 방법 및 원리

과일의 개수 입력 후, banana와 apple을 연속으로 입력하는 프로그램.

#include <iostream>
#include <string>

int main() {
	int n;
    std::cin >> n;
    
    string* arr = new string[n];
    getline(cin, arr[0]);
    getline(cin, arr[1]);
    
    return 0;
}

 

위 코드에서 n을 입력하고 엔터를 누르면, 엔터("\n")가 표준 입력 버퍼에 입력된다.

 

따라서, arr[0]에는 "\n"가 입력되는 사태가 발생한다.

 

그러므로, 우리는 "\n"를 표준입력버퍼에서 삭제해줘야한다.

 

`cin.ignore()`를 이용하자.

 

수정된 코드는 다음과 같다.

 

#include <iostream>
#include <string>

using namespace std;

int main() {
	int n;
    cin >> n;
    cin.ignore(); // 계행문자 삭제
    
    string* arr = new string[n];
    getline(cin, arr[0]);
    getline(cin, arr[1]);
    
    return 0;
}

 

728x90