> 백엔드 개발 > C++ > C에서 정수 사용자 입력을 어떻게 효과적으로 확인할 수 있습니까?

C에서 정수 사용자 입력을 어떻게 효과적으로 확인할 수 있습니까?

Patricia Arquette
풀어 주다: 2024-12-07 02:47:14
원래의
304명이 탐색했습니다.

How Can I Effectively Verify Integer User Input in C  ?

사용자 입력을 정수로 확인

문제 설명

C 프로그램에서는 사용자 입력을 확인하는 것이 중요합니다. 특히 수학 연산을 수행할 때 예상된 형식입니다. 이 문서에서는 사용자가 제공한 입력이 정수인지 확인하는 방법을 설명합니다. 입력이 정수가 아닌 경우 프로그램은 사용자에게 유효한 정수를 다시 입력하라는 메시지를 표시합니다.

해결책

사용자 입력을 확인하는 두 가지 주요 접근 방식이 있습니다. 정수로:

1. cin.fail() 사용:

  • cin >>을 사용하여 입력을 읽습니다.
  • if(cin.fail()를 사용하여 입력 스트림 상태를 확인합니다. ).
  • cin.fail()이 true인 경우 입력이 실패했음을 의미합니다. 정수.

2. std::getline 및 문자열 조작 사용:

  • std::getline(std::cin, theInput)을 사용하여 입력을 문자열로 캡처합니다.
  • 다음을 확인하세요. if (theInput.find_first_not_of("0123456789")를 사용하여 숫자가 아닌 모든 문자에 대한 문자열 != std::string::npos).
  • 조건이 true인 경우 입력에 숫자가 아닌 문자가 포함되어 있음을 의미합니다.

구현

아래는 std::getline 및 문자열 조작을 구현하는 코드 조각입니다. 접근 방식:

#include <iostream>
#include <string>

int main() {

    std::string theInput;
    int inputAsInt;

    std::getline(std::cin, theInput);

    while(std::cin.fail() || std::cin.eof() || theInput.find_first_not_of("0123456789") != std::string::npos) {

        std::cout << "Error" << std::endl;

        if( theInput.find_first_not_of("0123456789") == std::string::npos) {
            std::cin.clear();
            std::cin.ignore(256,'\n');
        }

        std::getline(std::cin, theInput);
    }

    std::string::size_type st;
    inputAsInt = std::stoi(theInput,&amp;st);
    std::cout << inputAsInt << std::endl;
    return 0;
}
로그인 후 복사

이 코드는 유효한 정수가 입력될 때까지 사용자에게 정수를 입력하라는 메시지를 계속 표시합니다. 사용자가 숫자가 아닌 문자를 입력하거나 빈 입력을 제공하는 상황을 처리합니다.

위 내용은 C에서 정수 사용자 입력을 어떻게 효과적으로 확인할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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