我有一种情况,我正在获取命令行参数并使用boost::lexical_cast<unsigned long>(my_param)
. 我希望 my_param 的负值会导致 lexical_cast 抛出,但相反它会愉快地转换它们,将 -1 变为18446744073709551615
. 这看起来很荒谬,因为 unsigned long 的最大值是 2^32-1,它看起来更像是 unsigned long long。
因此,我正在寻找一种更智能的方法将 char * 输入转换为 unsigned long,或者验证我没有接受伪装成大 unsigned long long 的负值。