如何在 qt creator 中将 QString 转换为 int

Posted

技术标签:

【中文标题】如何在 qt creator 中将 QString 转换为 int【英文标题】:how to convert QString into int in qt creator 【发布时间】:2014-07-08 11:38:49 【问题描述】:

我已经看到一个关于同一问题的答案,但是当我尝试解决我的问题时,它会感到困惑。

这是我的字符串,

bit_rate = "bitrate: 2334 kb/s"

我需要从此字符串中获取2334 并将其分配给一个整数变量。 这在 qt creator 中怎么可能?我试过toInt(),但它总是给出0作为答案。

【问题讨论】:

How to convert QString to int?的可能重复 不是我上面提到的答案。但我不能按原样使用它。由于后缀和前缀问题 【参考方案1】:

你需要去掉bitrate:前缀和kb/s后缀。最好的方法是使用QRegExpQRegularExpression提取字符串的数字部分,然后调用toInt()

这是一个例子:

QString str = "bitrate: 3543 kb/s";
int value;

QRegExp re("bitrate:\\s*(\\d+)\\s*.*");
if (re.indexIn(str) != -1) 
    value = re.cap(1).toInt();
 else 
    qDebug() << "String not matched.";
    return;

qDebug() << value;

【讨论】:

谢谢,这正是我想要的答案。 感谢@Googie 为您解答。因此,我倾向于在代码中的其他部分使用正则表达式。【参考方案2】:

reference page 在这方面有大量资料。实现这一点的最简单方法是根据空格拆分字符串,然后将您想要的字符串转换为 Int。

例子:

QString str = "bitrate: 3543 kb/s";
QStringList lst = str.split(" ");
Int value = lst[1].toInt();

【讨论】:

哎呀我太傻了。谢谢你的回答很容易给了我结果..非常感谢。 @Mlarnt90 所以重复问题的答案对您没有帮助?和这个基本一样。【参考方案3】:
QTextIStream stream("bitrate: 3543 kb/s");
QString prefix, sufix;
int result;
stream >> prefix >> result >> sufix;

【讨论】:

以上是关于如何在 qt creator 中将 QString 转换为 int的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Qt 中将 QVariant 转换为 QString,反之亦然?

Qt Creator怎么实现语法高亮?

在 Qt 中将 WCHAR 转换为 QString

在 Qt Creator 中将 TagLib 库添加到 Linux Qt 项目?

qt creator源码全方面分析(4-5)

qt creator源码全方面分析(4-5)