我已经看到了关于同一个问题的一个答案,但是当我用我的问题尝试它时会感到困惑。
这是我的字符串,
bit_rate = "bitrate: 2334 kb/s"
我需要从此字符串中获取2334
并将其分配给整数变量。
这怎么可能在qt创建者。我尝试了toInt()
,但它始终以0
作为答案。
答案 0 :(得分:6)
您需要删除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;
答案 1 :(得分:2)
reference page有很多材料。实现这一点的最简单方法是根据空格拆分字符串,然后将所需的字符串转换为Int。
示例:
QString str = "bitrate: 3543 kb/s";
QStringList lst = str.split(" ");
Int value = lst[1].toInt();
答案 2 :(得分:1)
QTextIStream stream("bitrate: 3543 kb/s");
QString prefix, sufix;
int result;
stream >> prefix >> result >> sufix;