getline() 문제: 줄 바꿈 건너뛰기
cin을 사용하여 정수를 읽은 후 사용자 입력을 검색하기 위해 getline(cin, str)을 사용하는 경우 >> 번호를 입력하면 이름에 대한 프롬프트에서 str에 대한 입력을 건너뛰는 예기치 않은 동작이 발생할 수 있습니다. 이는 getline(cin, str)이 이전 정수 입력이 남긴 개행 문자를 읽고 삭제하기 때문에 발생합니다.
이 문제를 해결하려면 getline(cin, str) 앞에 std::ws를 사용하여 공백을 건너뛸 수 있습니다. , 줄바꿈 포함, 문자열을 읽기 전에. 이렇게 하면 getline(cin, str)이 이름 프롬프트를 건너뛰지 않고 사용자 입력을 올바르게 읽을 수 있습니다.
int number; string str; int accountNumber; cout << "Enter number:"; cin >> number; cout << "Enter name:"; cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); getline(cin, str); cout << "Enter account number:"; cin >> accountNumber;
cin.ignore를 사용하면 남은 공백이나 개행 문자를 효율적으로 우회하여 getline(cin, str)을 허용할 수 있습니다. ) 의도한 대로 사용자 이름 입력을 캡처합니다.
위 내용은 `getline()`이 정수를 읽은 후 입력을 건너뛰는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!