2015-12-02 53 views
0

我有以下的QString:的QList <QString>到QString.arg()

QString funcProxy = "executeProxy(\"%1\", \"%2\", \"%3\")"; 

的數據,對每一個在:

QList<QString> listProxy; 

我怎麼會去在listProxy添加數據使用arg()方法的funcProxy?

funcProxy.arg(??); 

感謝

回答

0

關於來自@owacoder的答案,您實際上並不需要替換函數,以下代碼應該可以正常工作:

for (int i = 0; i < listProxy.size(); ++i) { 
    funcProxy = funcProxy.arg(listProxy.at(i)); 
} 

爲什麼你問:從文檔上QString::arg()

返回此字符串與字符串替換

因此它取代了最低數字編號最小的位置標記副本arg調用中的字符串。第一次迭代包含%1,%2%3,因此它取代%1。下一次迭代包含%2%3,因此取代%2

另外,如果你有控制權funcProxy,你可以做以下給出您可以將列表更改爲QStringList

QString funcProxy = "executeProxy(\"%1\")"; 
QStringList listProxy{"a", "b", "c"}; 

funcProxy = funcProxy.arg(listProxy.join("\", \"")); 
+0

謝謝這是一個很好的解決方案 – adviner

0

如果你知道你的列表中有3完全相同的元素,你可以這樣做:

funcProxy.arg(listProxy.at(0)).arg(listProxy.at(1)).arg(listProxy.at(2)); 

否則,你可以這樣做:

for (int i = 0; i < listProxy.size(); ++i) 
    funcProxy.replace(QString("%%1").arg(i+1), listProxy.at(i)); 
+0

我試圖避免因爲它可能是三個以上。 funcProxy每次都會有所不同。似乎我必須循環瀏覽它。 – adviner

+0

@adviner - 查看我的編輯。 – owacoder