2014-02-27 11 views
0

문자열에서 스칼라 (char, short, int ...)로 데이터를 추출 할 때 형식 제한을 초과하는 값을 얻는 방법을 쉽게 알 수 있습니까?C++ 문자열을 스칼라로 추출 할 때 스칼라로 문자열을 추출 할 때 오버플로/언더 플로우 처리

unsigned char   function(void) 
{ 
    std::string  str = "259"; 
    std::ostringstream os(str); 
    unsigned char  scalar; // could also be short, int, float or double 

    if (str > /* limit of char */) 
    { 
     /* throw exception */ 
    } 

    os >> scalar; 
    return scalar; 
} 

답변

0

std::stoi과 같은 새로운 C++11 conversion functions을 고려하십시오. 이 경우에는 std::out_of_range 예외가 발생합니다. 유감스럽게도이 경우 char 사례는 직접 처리되지 않지만 먼저 int으로 변환 한 다음 수동으로 범위를 확인할 수 있습니다.