istream라이브러리의cin.getline()
cin.getline(char* str, streamsize n);
cin.getline(char* str, streamsize n, char dlim);
cin.getline(변수 주소, 최대 입력 가능 문자수, 종결 문자);
‘\0’ 인 c-string 을 입력 받는데 사용n-1 개의 문자 개수만큼 읽어와 str 에 저장 ➡️ n번째 문자는 NULL(‘\0’)로 바꿈delim 은 별도로 지정해주지 않으면 엔터(‘\n’)로 인식delim 지정해주면 delim 직전까지 읽어서 str 에 저장
string라이브러리의getline()
getline(istream& is, string str);
getline(istream& is, string str, char dlim);
getline(입력스트림 오브젝트, 문자열을 저장할 string 객체, 종결 문자);
ex) getline(cin, str);
delim 만날 때 까지 모든 문자열을 입력 받아 하나의 string 객체에 저장delim ➡️ '\n'❗️ 입력 받을 때 띄어쓰기에 따라 구분되지 않고 엔터에 따라 구분해 입력받기 위해 주로 사용
❗️ 주의
int n;
string str;
cin >> n;
getline(cin, str);
n 을 입력 받은 후 문자열을 입력받지 않고 바로 다음 코드로 넘어감
➡️ n을 입력한 뒤 누른 엔터(‘\n’)가 그대로 남아있어 getline() 에 들어가기 때문
✏️ 해결방법: cin.ignore() 함수 사용
int n;
string str;
cin >> n;
cin.ignore();
getline(cin, str);
cin.ingore() 가 입력 버퍼의 모든 내용을 제거해주어 getline() 이 정상적으로 동작 가능
➡️ 아니면 그냥 모든 값을 getline 으로 입력받도록 하면 해결 가능