如何在 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
后缀。最好的方法是使用QRegExp
或QRegularExpression
提取字符串的数字部分,然后调用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,反之亦然?