Qt拆分Q字符串

Qt Split QString

本文关键字:字符串 拆分 Qt      更新时间:2023-10-16

假设我有一个如下的QString:

[General]
APPLICATION_NAME=skype
Pickup_key=222
Hangup_shift=55
Hangup_key=223
Reject_key=556
Pickup_ctrl=1

如何获取Pickup_key中的ONLY 222并将其存储到int中?每次运行程序时,整数值都会动态变化,因此我需要读取"Pickup_key="后面的数字。顺便说一句,我正在把QFile读成QString,这就是为什么它的形状是这样的。

您可以编写以下类来读取和处理字符串(实际上它看起来像ini格式):

class IniReader
{
public:
    IniReader(const QString &input)
    {
        // Split by n first.
        QStringList lines = input.split('n');
        foreach (const QString &line, lines) {
            // Split line by '='.
            QStringList tokens = line.split('=', QString::SkipEmptyParts);
            if (tokens.size() == 2) {
                m_data.insert(tokens.at(0), tokens.at(1));
            }
        }
    }
    QVariant data(const QString &key) const {
        return m_data.value(key);
    }
private:
    QMap<QString, QVariant> m_data;
};

以下是如何使用它:

IniReader reader("[General]n" 
                 "APPLICATION_NAME=skypen" 
                 "Pickup_key=222n" 
                 "Hangup_shift=55n" 
                 "Hangup_key=223n" 
                 "Reject_key=556n" 
                 "Pickup_ctrl=1");
int Pickup_key = reader.data("Pickup_key").toInt();

而且,正如其他人已经建议的那样,您可以使用QSettings来读取和处理文件的数据。这里有一个例子:

QSettings settings("test.ini", QSettings::IniFormat);
int Pickup_key2 = settings.value("Pickup_key").toInt();

其中test.ini文件包含您的示例字符串。