>백엔드 개발 >C++ >C의 문자열 내에서 숫자 값을 효율적으로 식별하려면 어떻게 해야 합니까?

C의 문자열 내에서 숫자 값을 효율적으로 식별하려면 어떻게 해야 합니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-18 02:08:10786검색

How Can I Efficiently Identify Numeric Values Within a String in C  ?

C를 사용하여 문자열 내 숫자를 식별하는 방법

C에서 문자열이 숫자 값을 나타내는지 여부를 확인할 수 있는 함수 코딩 중요한 도전이다. 이 기사에서는 이 문제를 다루고 효율적인 솔루션을 제시합니다.

원래 시도

처음에는 isParam이라는 함수가 텍스트 내의 행이 있는지 확인하려는 목적으로 개발되었습니다. 파일이 숫자 값으로 구성되었습니다. isdigit 및 atoi 함수를 활용한 함수이지만 예상치 못한 오류가 발생했습니다.

대체 접근 방법

원래 함수 대신 다른 방법을 권장합니다. 이 접근 방식에는 숫자가 아닌 문자가 발견될 때까지 문자열을 순회하는 작업이 포함됩니다. 그러한 문자가 식별되면 문자열은 숫자가 아닌 것으로 간주됩니다. 코드는 다음과 같습니다.

bool is_number(const std::string& s)
{
    std::string::const_iterator it = s.begin();
    while (it != s.end() && std::isdigit(*it)) ++it;
    return !s.empty() && it == s.end();
}

또는 C 11 구문을 활용하여 동일한 결과를 얻을 수 있습니다.

bool is_number(const std::string& s)
{
    return !s.empty() && std::find_if(s.begin(), 
        s.end(), [](unsigned char c) { return !std::isdigit(c); }) == s.end();
}

제한 사항 및 개선 사항

제공된 솔루션은 양의 정수만 검증한다는 점은 주목할 가치가 있습니다. 음수 또는 소수 값과 관련된 시나리오의 경우 보다 포괄적인 라이브러리 기반 방법이 권장됩니다. 음수를 처리하도록 코드를 확장하는 것은 상대적으로 간단하지만 소수점 유효성 검사를 구현하려면 더욱 강력한 접근 방식이 필요합니다.

위 내용은 C의 문자열 내에서 숫자 값을 효율적으로 식별하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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