2014-03-25 78 views
0

我想在Qt中使用Strings的有效方式。因爲我是Qt環境中的新手。如何從Qt中的文件中有效地解析格式化文本?

我這樣做什麼:

我加載一個文本文件,並得到各線。 每行都有逗號分隔的文本。 線架構:

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

實施例:

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

注:極限可以是1或0,並且在同一其它。

所以我想獲得Fname並從{}獲取限制,列表,選項值。

我正在想用find {編寫代碼,並通過符號讀取符號來取得裏面的內容。

什麼是有效的解析方法?

謝謝。

回答

1

以下片段將爲您提供第一組括號中的Fname和限制,列表,選項。如果您也對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 ... 
}