我正在解析字符串,我希望用6位数解析数字。我也知道这个数字是6位数,所以它适合unsiged int。
哪种方式更好解析它? 使用atoi然后转换为unsigned int或使用strtoul(返回unsigned long int)然后转换为unsigned int?
还有另一种我没有想到的方法吗? 感谢
答案 0 :(得分:1)
如果您知道字符串的外观,可以使用sscanf
sscanf(yourStringBuffer, "%ud", &unsingedIntVariable);
答案 1 :(得分:-1)
嗯,最简单的版本是C ++中的stoul
。
unsigned int i = stoul(str);
但是如果你想直接这样做,这对时间至关重要,你也可以明确地做,因为你知道数字位数:
unsigned int i =
static_cast<unsigned int>(str[5]-'0') * 1ul
+ static_cast<unsigned int>(str[4]-'0') * 10ul
+ static_cast<unsigned int>(str[3]-'0') * 100ul
+ static_cast<unsigned int>(str[2]-'0') * 1000ul
+ static_cast<unsigned int>(str[1]-'0') * 10000ul
+ static_cast<unsigned int>(str[0]-'0') * 100000ul;
但我强烈建议您使用stoul
。