>  기사  >  백엔드 개발  >  C에서 문자열을 정수로 변환하는 데 실패하는 경우를 처리하는 방법은 무엇입니까?

C에서 문자열을 정수로 변환하는 데 실패하는 경우를 처리하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-04 21:32:02510검색

How to Handle String to Integer Conversion Failures in C  ?

C에서 실패 처리를 사용하여 문자열을 정수로 변환

C에서 문자열을 처리할 때 숫자 표현으로 변환해야 하는 경우가 종종 발생합니다. 정수와 같은. 이에 대한 일반적인 접근 방식 중 하나는 C 표준 라이브러리의 std::stoi 함수를 사용하는 것입니다. 그러나 이 함수에는 변환 실패를 보고하는 기능이 부족합니다. 보다 강력한 코드를 위해 Boost::lexical_cast 및 대체 접근 방식을 사용하여 실패한 변환을 처리하는 방법을 살펴봅니다.

boost::lexical_cast

boost::lexical_cast 함수 문자열을 정수로 변환하는 강력한 방법을 제공합니다. 변환을 수행할 수 없으면 예외가 발생합니다. 다음 코드 조각은 그 사용법을 보여줍니다.

<code class="cpp">#include <boost/lexical_cast.hpp>

try {
    int i = boost::lexical_cast<int>(s);
    // ...
} catch(...) {
    // ...
}</code>

부스트가 아닌 접근 방식

부스트 라이브러리를 사용할 수 없는 경우 대체 방법을 사용할 수 있습니다.

  1. std::stringstream 사용: 문자열을 std::stringstream 객체로 읽어 문자열을 정수로 읽을 수 없거나 추가 비-문자열이 있는 경우 변환에 실패할 수 있습니다. 공백 입력.
  2. 사용자 정의 lexical_cast 함수 만들기: 이 함수는 템플릿 내에 std::stringstream 접근 방식을 래핑하여 구현할 수 있습니다. function.
  3. std::stringstream 접근 방식의 던지지 않는 버전 사용: 예외 발생을 방지하려면 성공 또는 실패를 나타내는 bool을 반환하는 lexical_cast 함수를 생성할 수 있습니다.

요약하자면, Boost::lexical_cast, std::stringstream 또는 사용자 정의 lexical_cast 함수를 사용하면 오류 처리 기능을 통해 문자열에서 정수로의 강력한 변환이 가능합니다. 올바른 선택은 라이브러리의 가용성과 필요한 예외 동작에 따라 달라집니다.

위 내용은 C에서 문자열을 정수로 변환하는 데 실패하는 경우를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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