getline() 동작 이해
C의 getline() 함수는 개행 문자가 나올 때까지 표준 입력에서 문자를 읽는 데 사용됩니다. 마주쳤다. 그러나 개발자는 cin의 추출 연산자(>>) 다음에 getline()을 사용할 때 예기치 않은 문제에 직면할 수 있습니다.
문제 설명
사용자는 자신의 코드가 getline()을 사용하여 사용자 제공 메시지를 캡처하려고 시도할 때 사용자 입력 수신을 일시 중지하지 않습니다. 근본 원인은 cin 추출 연산자의 동작과 관련이 있습니다.
해결 방법: 줄 바꿈 문자 플러시
cin의 추출 연산자를 사용하여 데이터를 읽은 후 줄 바꿈 문자가 남습니다. 입력 버퍼의 문자(n)입니다. getline()이 즉시 호출되면 이 개행 문자를 발견하고 즉시 읽기를 중지합니다.
이 문제를 해결하려면 getline()을 호출하기 전에 버퍼에서 개행 문자를 플러시해야 합니다. 이는 다음과 같이 cin.ignore()를 사용하여 달성할 수 있습니다.
string messageVar; cout << "Type your message: "; cin.ignore(); getline(cin, messageVar);
cin.ignore()를 삽입하면 개행 문자가 삭제되어 getline()이 의도한 대로 사용자 입력을 읽을 수 있습니다. 이 기술을 사용하면 cin 연산자와 getline()이 연속적으로 원활하게 작동합니다.
위 내용은 `cin`의 추출 연산자를 사용한 후 `getline()`이 작동하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!