>백엔드 개발 >C++ >`getline()`이 정수를 읽은 후 입력을 건너뛰는 이유는 무엇입니까?

`getline()`이 정수를 읽은 후 입력을 건너뛰는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-16 21:06:11225검색

Why Does `getline()` Skip Input After Reading an Integer?

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.