解析已知大小的unsigned int

时间:2014-12-01 09:20:03

标签: c++ parsing

我正在解析字符串,我希望用6位数解析数字。我也知道这个数字是6位数,所以它适合unsiged int。

哪种方式更好解析它? 使用atoi然后转换为unsigned int或使用strtoul(返回unsigned long int)然后转换为unsigned int?

还有另一种我没有想到的方法吗? 感谢

2 个答案:

答案 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