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

时间:2016-01-04 15:18:39

标签: c++ qt qstring

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

我找到了常规的QString::toXXX函数,但它们采用了一个基本参数,但是我希望以C-Compiler的方式从字符串中确定基数。

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

提前谢谢。

2 个答案:

答案 0 :(得分:5)

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

  

如果base为0,则使用C语言约定:如果字符串以“0x”开头,则使用base 16;如果字符串以“0”开头,则使用基数8;否则,使用基数10.

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

答案 1 :(得分:1)

事实证明,你只想对二进制数字这样做。

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

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

然后使用该基础执行QString:toXXX