如何有效地解析Qt中文件的格式化文本?

时间:2014-03-25 20:50:48

标签: parsing qt5

我想在Qt中使用Strings的有效方法。因为我是Qt环境中的新手。

所以我在做什么:

我正在加载一个文本文件,并获取每一行。 每行都有逗号分隔的文本。 行模式:

 Fname{limit:list:option}, Lname{limit:list:option} ... etc.

示例:

 John{0:0:0}, Lname{0:0:0} 

注意:限制可以是1或0,与其他限制相同。

所以我想从{}获取Fname并获取限制,列表,选项值。

我正在考虑使用find {编写一个代码,并通过逐个符号读取内容。

解析它的有效方法是什么?

感谢。

1 个答案:

答案 0 :(得分:1)

以下代码段将为您提供第一组括号中的Fname和limit,list,option。如果您对Lname集感兴趣,也可以轻松更新。

QFile file("input.txt");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
    qDebug() << "Failed to open input file.";

QRegularExpression re("(?<name>\\w+)\\{(?<limit>[0-1]):(?<list>[0-1]):(?<option>[0-1])}");

while (!file.atEnd())
{
    QString line = file.readLine();
    QRegularExpressionMatch match = re.match(line);

    QString name = match.captured("name");
    int limit = match.captured("limit").toInt();
    int list = match.captured("list").toInt();
    int option = match.captured("option").toInt();

    // Do something with values ...
}