【问题标题】:Qt/C++ Convert QString to DecimalQt/C++ 将 QString 转换为十进制
【发布时间】:2013-12-22 12:11:19
【问题描述】:

如何将 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;
}

【问题讨论】:

  • @Rolice:这可能只是 OP 要求的一小部分。
  • 我只是参考例子,不要否认你的回答,尤其是评论:)
  • @Rolice:很公平。 :) 我认为如果 OP 对确切的数字模式更清楚,我们本可以更具体。这就是我现在尝试提供所有可能选项的原因。 :)

标签: c++ qt qstring qtcore


【解决方案1】:

根据documentation

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

返回使用 base base 转换为 intstring,默认为 10,必须介于 2 和 36 之间,或 0。如果转换失败,则返回 0。

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

如果base为0,则使用C语言约定:如果字符串以“0x”开头,则使用base 16;如果string 以“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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-08
    • 1970-01-01
    • 2013-03-10
    • 2014-02-24
    • 2017-07-31
    • 2013-07-20
    • 2012-06-17
    相关资源
    最近更新 更多