2015-07-02 14 views
-2
給出不正確的結果

我使用C++的Qt庫和下面的代碼是可以正常使用的Windows,但不工作在CentOS:QString的功能在CentOS

if(line.startsWith("[", Qt::CaseInsensitive)) 
{ 
    int index = line.indexOf(']', 0, Qt::CaseInsensitive); 
    QString subLine = line.mid(index+1); 
    subLine = subLine.trimmed(); 
    tokenList = subLine.split("\t"); 
} 
else 
{ 
    tokenList = line.split("\t"); 
} 

我有一個線[XXXX]東西../dir/file.extension,我想將行分成令牌時忽略[xxxx]部分。我在Windows上使用VC9進行調試,並且工作正常。

編輯:我已經刪除mid()和正確使用()仍然同樣的問題仍然存在,工作在Windows上,但不是在CentOS上。

編輯︰在Linux上使用QMessageBox調試後,我得出結論說,控制是永遠不會進去如果塊,我試圖使用if(line.data()[0] =='[')但結果相同。

+0

你可以在提到的操作系統上調試它嗎? –

+0

您是否正在從Windows上創建的文件中讀取數據?您可能會遇到行結束問題。 –

+0

@ p.i.g。我可以在Windows上調試它,但不是在CentOS上,我沒有調試env那裏。 – wazza

回答

1

您的代碼可以簡化。

line.remove(QRegExp("\\[\\s+\\d+\\.\\d+\\.\\d+\\.\\d+\\s+\\]")); 
tokenList = line.split("\t"); 
+0

謝謝,但行的內容是動態的,我不知道確切的子字符串[xxxx]這就是爲什麼我找到]的索引來讀取字符串後。 – wazza

+1

然後,您可以使用正則表達式。我已經更新了答案。 –

+0

其返回 「[192.168.2.149] DEM-FILENAME [0] \t ../terrain/los_angeles-w.dem」 但我想「DEM-FILENAME [0] \t ../terrain/los_angeles-w .dem「 – wazza