>백엔드 개발 >C++ >유효하지 않은 숫자 입력을 안정적으로 처리하기 위해 C 스트림을 어떻게 사용할 수 있습니까?

유효하지 않은 숫자 입력을 안정적으로 처리하기 위해 C 스트림을 어떻게 사용할 수 있습니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-28 15:11:14998검색

How Can C   Streams Be Used to Reliably Handle Invalid Numeric Input?

C 스트림으로 잘못된 입력 해결

문제:

제공된 코드는 숫자가 아닌 문자가 입력으로 받아들여집니다. 그러나 입력에 유효한 숫자 뒤에 문자가 포함되어 있는 상황은 처리하지 못합니다.

제안된 해결 방법:

이 문제를 해결하려면 다른 접근 방식을 사용하는 것이 좋습니다. std::getline 및 std::string을 사용합니다.

코드 조각:

#include <string>
#include <sstream>

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;
}

설명:

이 개정된 솔루션은 다음 단계를 따릅니다.

  1. 전체 읽기 line: std::getline을 사용하여 공백 및 특수 문자를 포함한 전체 입력 줄을 문자열 변수 라인으로 가져옵니다.
  2. 문자열을 double로 변환: 문자열 라인을 유지하기 위해 std::stringstream 객체 ss가 생성됩니다. 그런 다음 스트림은 >>를 사용하여 숫자 값을 추출하는 데 사용됩니다. 연산자.
  3. 성공적인 변환 확인: ss 스트림이 성공적으로 숫자를 추출하고 문자열 끝에 도달하면 유효한 숫자 입력을 나타냅니다.
  4. 오류 처리: 변환이 실패하면 오류 메시지가 표시됩니다.
  5. 이 접근 방식은 입력의 후행 문자나 공백에 관계없이 유효한 실수만 입력으로 허용됩니다.

    위 내용은 유효하지 않은 숫자 입력을 안정적으로 처리하기 위해 C 스트림을 어떻게 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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