Qt Split QString

时间:2014-08-25 22:14:47

标签: c++ c qt qstring

假设我有一个像这样的QString:

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

我如何才能在Pickup_key中获取类似222的内容并将其存储到int中?每次运行程序时,整数值都会动态变化,所以我需要读取" Pickup_key ="之后的数字。我顺便将QFile读成QString,这就是为什么它会像这样形成。

1 个答案:

答案 0 :(得分:2)

您可以编写以下类来读取和处理您的字符串(实际上它看起来像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=skype\n" \
                 "Pickup_key=222\n" \
                 "Hangup_shift=55\n" \
                 "Hangup_key=223\n" \
                 "Reject_key=556\n" \
                 "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文件包含示例字符串。