Qt/C++将QString转换为十进制数

4

如何将QString转换为十进制数?

在C#代码中,它看起来像这样:

public static decimal ConvertToDecimal(string tekst, bool upperOnly)
{
decimal num = 0m;
decimal num2 = 1m;
string text = upperOnly ? "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" : "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234";
int i = tekst.Length - 1;
while (i >= 0)
{
    num += text.IndexOf(tekst[i]) * num2;
    i--;
    num2 *= text.Length;
}
return num;
}

1
这里可能有答案:https://dev59.com/OVDTa4cB1Zd3GeqPJ4dA - Rolice
1
@Rolice:这可能只是OP所问的一小部分子集。 - László Papp
1
我只是参考一些例子,不否定你的答案,尤其是评论方面 :) - Rolice
1
@Rolice:好的,没问题。:) 我认为如果原帖作者更清楚地说明了确切的数字模式,我们就可以更具体地回答。这就是我现在试图提供所有可能选项的原因。 :) - László Papp
1个回答

8
根据文档

int QString::toInt(bool * ok = 0, int base = 10) const

将字符串转换为整数,使用基数base进行转换,默认值为10,必须介于2和36之间,或者为0。如果转换失败,则返回0。

如果发生转换错误,则将*ok设置为false;否则,将*ok设置为true。

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

字符串转换始终在'C'语言环境中发生。要进行与语言环境有关的转换,请使用QLocale::toInt()

示例:

QString str = "FF";
bool ok;
int hex = str.toInt(&ok, 16);       // hex == 255, ok == true
int dec = str.toInt(&ok, 10);       // dec == 0, ok == false

请注意,根据您的具体用例,您可能还需要查阅以下文档:

long QString::toLong(bool * ok = 0, int base = 10) const (将QString转换为长整型)

qlonglong QString::toLongLong(bool * ok = 0, int base = 10) const (将QString转换为长长整型)

double QString::toDouble(bool * ok = 0) const (将QString转换为双精度浮点型)

float QString::toFloat(bool * ok = 0) const (将QString转换为单精度浮点型)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接