我有一个函数,计算值可以达到比无符号 __int64 范围更高的值,MS 用 18,446,744,073,709,551,615 表示。如何测试一个数字是否超出了该范围?我已将 int 转换为 char 并尝试通过使用 strlen 检查长度来进行测试。但是,一些长度超过指定长度的值:例如 if(strlen(charvar)>17) 会神秘地转义。那么我怎样才能有效地测试呢?
问问题
482 次
1 回答
1
如果您可以使用现代编译器或 Boost,那么lexical_cast
就可以完成这项工作:
uint64_t bigint;
try {
bigint = lexical_cast<uint64_t>(str);
} catch (std::bad_lexical_cast &e) {
// do whatever you want to do when the string isn't valid;
}
// Safely use bigint
请参阅此链接以获取 Boost 库。你绝对可以在 VS 2008 中得到这个。
如果这只是Windows你也可以看看_atoi64
之类的。请参阅msdn。这些返回I64_MAX
并I64_MIN
在上溢/下溢的情况下。
于 2013-08-24T15:51:29.070 回答