char input[100][100] = {0};

cout << "N을 입력 : ";

cin >> N;

while (i < N) {

cin.getline(input[i], 100);

i++;

}


이런식으로 N번의 문자열을 받는 프로그램을 짜고 실행하였는데

N = 3 이라면 3번을 입력받아야 하는데

2번밖에 입력안받는 현상이 생겼다.

버퍼에 남아있는 문자때문에 그렇다고 생각되어


C언어를 할때 쓰던

fflush(stdin);

을 사용하여 버퍼를 비워 보았는데 비워지지 않았다ㅠ


그래서 찾아본 결과


cin.ignore() 로 입력버퍼를 비울 수 있다는 것을 알게되었다.


//////////////////////////////////////////////////////////


char input[100][100] = {0};

cout << "N을 입력 : ";

cin >> N;


cin.ignore();

while (i < N) {

cin.getline(input[i], 100);

i++;

}


///////////////////////////////////////////////////////////


이런식으로 버퍼를 지워주니 getline에서 잘 입력받아 주었다.

+ Recent posts