Qt / C ++将QString转换为Decimal

时间:2013-12-22 12:11:20

标签: c++ qt qstring qtcore

如何将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 个答案:

答案 0 :(得分:6)

根据documentation

  

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

     

使用base base 返回转换为string的{​​{1}},默认情况下为int且必须介于2到36之间,或者为0。如果转换失败,则为0。

     

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

     

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

     

字符串转换将始终在“C”语言环境中进行。对于与语言环境相关的转换,请使用string

     

示例:

QLocale::toInt()

请注意,根据您的确切用例,您可能还希望查看以下文档:

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

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

double QString::toDouble(bool * ok = 0) const

float QString::toFloat(bool * ok = 0) const