C의 오류 처리를 사용하여 문자열을 int로 변환
문자열을 정수로 변환하는 것은 프로그래밍에서 일반적인 작업입니다. 그러나 문자열 값을 정수로 성공적으로 변환할 수 없는 경우가 있을 수 있습니다. 이러한 시나리오에서는 변환 실패를 적절하게 처리하는 것이 중요합니다.
boost::lexical_cast
오류가 있는 문자열을 int로 변환하는 가장 간단한 방법 중 하나 처리는 Boost::lexical_cast 함수를 사용하는 것입니다. 변환을 진행할 수 없는 경우 이 함수는 예외를 발생시켜 이를 포착하고 적절하게 응답할 수 있습니다.
<code class="cpp">#include <boost/lexical_cast.hpp> int main() { std::string s; std::cin >> s; try { int i = boost::lexical_cast<int>(s); } catch (...) { // Handle the conversion failure } }</code>
표준 라이브러리 함수 사용
사용하지 않는 대체 접근 방식 Boost는 std::stringstream 및 std::bad_cast와 같은 표준 라이브러리 함수를 활용하는 것입니다.
<code class="cpp">#include <iostream> #include <sstream> int main() { std::string s; std::cin >> s; std::stringstream ss(s); int i; if ((ss >> i).fail() || !(ss >> std::ws).eof()) { throw std::bad_cast(); } }</code>
사용자 정의 함수
사용자 정의를 위해 Boost::lexical_cast의 기능을 에뮬레이트하고 변환 실패를 관리하는 함수입니다.
<code class="cpp">template <typename T> T lexical_cast(const std::string& s) { std::stringstream ss(s); T result; if ((ss >> result).fail() || !(ss >> std::ws).eof()) { throw std::bad_cast(); } return result; }</code>
Non-Throwing Versions
예외 발생을 피하고 싶다면 예외를 포착하고 실패 표시기를 반환하여 위 함수의 던지지 않는 버전을 만들 수 있습니다.
<code class="cpp">template <typename T> bool lexical_cast(const std::string& s, T& t) { try { t = lexical_cast<T>(s); return true; } catch (const std::bad_cast& e) { return false; } }</code>
이러한 방법을 사용하면 잠재적인 변환 실패를 처리하면서 문자열을 정수로 효율적으로 변환할 수 있습니다.
위 내용은 C에서 문자열을 정수로 변환할 때 변환 오류를 어떻게 처리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!