2010-12-01 104 views
5

QString的文件說,使用ARG()在 的sprintfQS中的QString :: sprintf和QString :: arg有什麼區別?在<a href="http://doc.qt.io/qt-5/qstring.html#arg" rel="nofollow">http://doc.qt.io/qt-5/qstring.html#arg</a>

一個優點()是在 編號的位置標記的順序可以改變,如果 應用程序的字符串 翻譯成其他語言,但 每個arg()仍然會替換 最低編號的未被放置的地方 標記,無論它出現在何處。

這是什麼意思?任何人都可以請示例解釋?

+1

ARG()的另一個優點:的sprintf()是(已廢棄)(HTTP:// qt-project.org/doc/qt-4.8/qstring.html#sprintf)。 – jlstrecker 2012-08-20 20:32:20

回答

5

說我們先從:

QString format("%1: %2 %3); 

然後調用:

format.arg("something"); 

格式現在是:

「的東西:%1%2」

......這意味着你可以建立起來字符串,你去。

改變位置標記的順序可能通過Qt的翻譯機制,它允許你說:

format = tr("Hi, %1, I hope you are %2"); 

,並把它添加到您的轉換表,並在不同的順序不同語言的參數。

5
int day = 1; 
int month = 12; 
int year = 2010; 
QString dateString = QString(tr("date is %1/%2/%3")).arg(month).arg(day).arg(year); 
// dateString == "date is 12/1/2010"; 

德國翻譯 「達斯北京時間基準:%2%1%3」:dateString = 「達斯基準北京時間:2010年12月1日」

4

添加到sje397答案一件事:調用

QString formatInAnOtherLanguage("%3 %1 %2"); 

所以:

當國際化你的應用程序,你可以有一個這樣的字符串

formatInAnOtherLanguage.arg("something"); 

formatInAnOtherLanguage將

"%3 something %2" 

這就是ARG功能的主要優點在sprintf函數

相關問題