string name;
cin >> name; // park jung hoon 공백 포함했다.

string age;
cin >> age;

cout << name << " and " << age << endl; // 결과는? park and jung
// age 는 입력도 안받았다. 이유는?
// cin 입력은 공백 단위로 입력 받는다.
// park 이 name 에 들어가고 버퍼에 남아있던 jung 이 age 에 들어가면서 끝나버린것.

// 또한 cin 은 Enter 줄바꿈 문자는 읽지 않으며 버퍼에 남긴다.
// getline 은 줄바꿈 문자까지도 읽는다. 다음을 보자.

int age;
cin >> age; // 3 과 엔터

string name;
getline(cin, name);

cout << name << " and " << age << endl; // 공백 and 3
// name 쪽에 아무것도 안뜨고 입력받으려고 조차 안했다. 이유는?
// 3 을 입력하고 엔터를 치면 엔터가 버퍼에 남는다. name 이 getline 으로 버퍼에 있던
// 줄바꿈 문자 버퍼를 받아 null 로 변환해서 name에 넣어버리고 끝난 것이다.
// cin 입력 후에 입력 버퍼를 비워주라.
int age;
cin >> age;

cin.ignore(std::numeric_limits<int>::max(), '\n'); // 개행문자를 만날때까지 싹 무시해!

string name;
getline(cin, name);

cout << name << " and " << age << endl; // 잘 나온다~
// getline 은 공백도 받고, Enter 인 줄바꿈 단위로 입력 받는다.
// park jung hoon 하면 다 들어간다. cin 에서는 park 만 들어갔었지?
// 줄바꿈 문자를 읽어들여서 null 로 바꾸고 버퍼에 남기지 않는다.
string age;
std::getline(cin, age);

string name;
std::getline(cin, name);

cout << name << " and " << age << endl;
// cin.getline(char 배열, 저장할 문자 최대개수)
// iostream 에 포함
// 공백 포함된 문자열을 받을 수 있다.