> 백엔드 개발 > C++ > C에서 `getline()`이 때때로 사용자 입력을 건너뛰는 이유는 무엇이며 어떻게 해결할 수 있습니까?

C에서 `getline()`이 때때로 사용자 입력을 건너뛰는 이유는 무엇이며 어떻게 해결할 수 있습니까?

Mary-Kate Olsen
풀어 주다: 2024-12-09 07:42:08
원래의
473명이 탐색했습니다.

Why Does `getline()` in C   Sometimes Skip User Input, and How Can I Fix It?

C의 getline(): 라인 버퍼링 처리

C에서 getline()은 표준 입력 스트림 cin에서 입력을 읽는 데 사용됩니다. 개행 문자를 만날 때까지. 그러나 사용자 입력을 요청하는 프로그램에서 사용하면 예상치 못한 동작이 발생할 수 있습니다.

다음 코드 조각을 고려하세요.

int number;
string str;
int accountNumber;

cout << "Enter number:";
cin >> number;
cout << "Enter name:";
getline(cin, str);
cout << "Enter account number:";
cin >> accountNumber;
로그인 후 복사

이 프로그램이 실행되면 첫 번째 번호를 입력하면 이름을 입력할 때까지 기다리지 않고 즉시 계좌 번호를 묻는 메시지가 표시됩니다. 이는 getline()이 입력 버퍼에서 나머지 개행 문자를 읽기 때문입니다.

이 문제를 방지하려면 getline() 앞에 std::ws(공백)를 사용하여 모든 공백과 개행 문자를 건너뛸 수 있습니다. 입력 스트림. 이렇게 하면 getline()이 공백이 아닌 다음 문자의 입력을 읽게 됩니다.

cout << "Enter number:";
cin >> number;
cout << "Enter name:";
cin >> ws;
getline(cin, str);
...
로그인 후 복사

이 단계를 통합하면 프로그램이 다음 입력으로 이동하기 전에 이름을 묻는 메시지를 올바르게 표시합니다.

위 내용은 C에서 `getline()`이 때때로 사용자 입력을 건너뛰는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿