从具有可选基数的字符串中解析数字

Parse number from string with optional base

如何从字符串中解析 0x345234230172(可能还有 0b001111)等数字?

我找到了常规的 QString::toXXX 函数,但它们采用基数参数,但我希望以 C 编译器会做的方式从字符串中确定基数。

我认为 Qt 中一定存在一些东西。但我只发现了上面提到的或其他明确采用基础的方法(例如作为流操纵器)。

提前致谢。

事实证明,您只想对二进制数执行此操作。

您必须通过以下任一方式手动检测碱基(通过读取前缀):

  • 使用QString::left,或
  • 使用正则表达式

然后用那个基地做QString:toXXX

QString::toXXX做你想做的(二进制表示除外):

If base is 0, the C language convention is used: If the string begins with "0x", base 16 is used; if the string begins with "0", base 8 is used; otherwise, base 10 is used.

所以只需使用 int i = s.toInt(NULL, 0);