Qt Split QString

0

Предположим, что у меня есть QString:

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

Как бы я захватил что-то вроде ТОЛЬКО 222 в Pickup_key и сохранил его в int? Целочисленные значения будут динамически меняться каждый раз, когда я запускаю программу, поэтому мне нужно прочитать номер, следующий за "Pickup_key =". Я читаю QFile в QString, кстати, почему он так QFile.

  • 1
    Используйте QTextStream для чтения строки (или файла) построчно. Существует также QSettings который уже может читать файл в этом формате (INI).
  • 0
    У меня есть программа, читающая его построчно, но как мне отделить «Pickup_key =» и «222»?
Показать ещё 2 комментария
Теги:
qt
qstring

1 ответ

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 содержит вашу строку образца.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню