> 백엔드 개발 > C++ > C에서 `cin`이 숫자 입력만 허용하도록 만드는 방법은 무엇입니까?

C에서 `cin`이 숫자 입력만 허용하도록 만드는 방법은 무엇입니까?

DDD
풀어 주다: 2024-12-17 07:34:25
원래의
615명이 탐색했습니다.

How to Make `cin` Accept Only Numerical Input in C  ?

cin 읽기 전용 숫자 만들기

cin을 사용하여 숫자 입력을 적용하는 것은 특히 혼합 입력 유형을 처리할 때 문제가 될 수 있습니다. 이 기사에서는 cin이 숫자 값만 허용하도록 하는 솔루션을 조사합니다.

제공된 코드에서 while 루프는 숫자가 아닌 문자를 무시하여 잘못된 입력을 수정하려고 시도합니다. 그러나 이 방법은 여러 입력을 처리할 때 한계에 직면합니다.

해결책: std::getline 및 std::string

이러한 장애물을 극복하기 위해 다음을 사용할 수 있습니다. 보다 포괄적인 접근 방식:

  1. 다음을 사용하여 전체 줄을 읽으세요. std::getline(): 이는 사용자 입력의 전체 행을 문자열로 읽습니다.
  2. std::stringstream:

      입력에서 문자열 스트림 ss를 생성합니다. 행.
    • >> 연산자.
  3. 변환 유효성 검사:

      변환이 성공했는지, 스트림이 끝에 도달했는지 확인하세요. 문자열(eof()).
    • 성공하면 루프를 종료합니다. 그렇지 않으면 오류 메시지를 표시합니다.
다음은 구현 예입니다.

#include <sstream>
#include <string>

int main()
{
    std::string line;
    double d;
    while (std::getline(std::cin, line))
    {
        std::stringstream ss(line);
        if (ss >> d)
        {
            if (ss.eof())
            {   // Success
                break;
            }
        }
        std::cout << "Error!" << std::endl;
    }
    std::cout << "Finally: " << d << std::endl;
}
로그인 후 복사
이 솔루션을 사용하면 정수와 부동 소수점 숫자가 모두 올바르게 처리됩니다. , 숫자가 아닌 문자는 완전히 삭제됩니다.

위 내용은 C에서 `cin`이 숫자 입력만 허용하도록 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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