> 백엔드 개발 > C++ > C의 `cin`을 사용하여 숫자 입력만 보장하려면 어떻게 해야 합니까?

C의 `cin`을 사용하여 숫자 입력만 보장하려면 어떻게 해야 합니까?

Mary-Kate Olsen
풀어 주다: 2024-12-16 07:47:10
원래의
771명이 탐색했습니다.

How Can I Ensure Only Numeric Input Using C  's `cin`?

입력 유효성 검사 강화: 숫자 입력만 허용

cin을 사용하여 사용자 입력을 받을 때, 특히 처리할 때 데이터 정확성을 강화하는 것이 중요합니다. 숫자 값으로. 제공된 코드에서 "1x"의 "x"와 같은 숫자가 아닌 문자가 무시되는 문제가 발생하여 잠재적으로 잘못된 결과가 발생할 수 있습니다.

강력한 솔루션

이 문제를 해결하기 위한 보다 철저한 접근 방식은 std::getline 및 std::string을 사용하여 숫자가 아닌 문자를 포함하여 전체 입력 줄을 캡처하는 것입니다. 다음 향상된 코드 조각은 이 접근 방식을 보여줍니다.

#include <string>
#include <sstream>

double enter_number()
{
    double number;
    std::string line;
    while (std::getline(std::cin, line)) {
        std::stringstream ss(line);
        if (ss >> number) {
            if (ss.eof()) { // Success
                break;
            }
        }
        std::cout << "Invalid input" << std::endl;
        std::cout << "Try again" << std::endl;
    }
    return number;
}
로그인 후 복사

구현 설명

  • std::getline은 공백 및 특수 문자를 포함하여 전체 입력 줄을 캡처합니다.
  • std::stringstream은 입력 라인을 double로 변환하는 데 사용됩니다. 데이터 유형.
  • >> 연산자는 입력 라인에서 숫자 값을 추출합니다.
  • eof 검사는 루프를 종료하기 전에 전체 라인이 성공적으로 double로 변환되었는지 확인합니다.
  • 결론

    이 향상된 접근 방식을 사용하면 숫자가 아닌 문자를 입력하려는 모든 시도가 잘못된 입력으로 표시되고 사용자는 유효한 숫자를 다시 입력하라는 메시지가 표시됩니다. 이 솔루션은 원래 코드에 나타난 문제를 효과적으로 해결하여 입력 줄에 숫자가 아닌 문자가 추가되더라도 유효한 숫자 입력만 허용되도록 합니다.

    위 내용은 C의 `cin`을 사용하여 숫자 입력만 보장하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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