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 중국어 웹사이트의 기타 관련 기사를 참조하세요!