假设我有一个像这样的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
,这就是为什么它会像这样形成。
答案 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文件包含示例字符串。