2014-02-27 14 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

考慮新的C++11 conversion functions類似std::stoi。在這種情況下,他們應該拋出std::out_of_range例外。不幸的是,這不會直接處理char的情況,但您可以先轉換爲int,然後手動檢查範圍。