> 백엔드 개발 > C++ > C에서 `getline`과 `>>` 연산자를 혼합하면 입력이 누락되는 이유는 무엇입니까?

C에서 `getline`과 `>>` 연산자를 혼합하면 입력이 누락되는 이유는 무엇입니까?

DDD
풀어 주다: 2024-11-29 15:13:10
원래의
891명이 탐색했습니다.

Why Does Mixing `getline` and `>>` 연산자로 인해 C에서 입력 누락이 발생합니까?
>` 연산자로 인해 C에서 입력 누락이 발생합니까? " />

getline과 연산자>>를 혼합하면 입력 누락이 발생함

이 코드는 getline을 사용하여 재킷 가격에 대한 사용자 입력을 검색하려고 시도하는 동안 문제가 발생합니다. 그럼에도 불구하고 사용자에게 프롬프트를 표시하면 입력이 수집되지 않고 대신 초기값 "0"이 사용됩니다.

기본 문제는 연산자>>를 사용할 때 사용자의 데이터가 입력되고 입력 버퍼에 개행 문자가 삽입되는 Enter 키가 뒤따른다는 것입니다. 공백으로 구분됩니다. 즉, 개행 문자가 변수에 할당되지 않고 버퍼에 남아 있다는 의미입니다.

나중에 getline이 호출되면 즉시 개행 문자를 찾습니다. 사용자에게 입력 메시지를 표시하지 않고 검색 기준을 충족하는 버퍼의 문자입니다.

해결책

이 문제를 해결하려면 다음 옵션을 고려하십시오.

  1. 무시 또는 더미 호출을 사용하여 라인 가져오기: 호출 무시 또는 수행 연산자>>를 사용한 후 버퍼에서 개행 문자를 제거하기 위한 더미 getline 호출.
  2. getline만 사용: 연산자 제거>> getline에만 의존합니다. 그런 다음 각각 정수 및 복식에 대한 Stoi 또는 Stod와 같은 함수를 사용하여 문자열을 원하는 데이터 유형으로 변환합니다. 이 접근 방식은 코드 안정성과 견고성을 향상시킵니다.

위 내용은 C에서 `getline`과 `>>` 연산자를 혼합하면 입력이 누락되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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