2010-12-01 10 views
5

documentation QString dans http://doc.qt.io/qt-5/qstring.html#arg ditquelle est la différence entre QString :: sprintf et QString :: arg dans Qt?

Un avantage d'utiliser arg() sur sprintf() est que l'ordre des marqueurs place numérotés peut changer, si les chaînes de l'application sont traduites dans d'autres langues, mais chaque arg() remplacera toujours le le plus petit numéro non remplacé place , peu importe où il apparaît.

Quelle est la signification de ceci? quelqu'un peut-il s'il vous plaît expliquer avec exemple?

+1

Un autre avantage de arg(): sprintf() est [Obsolète] (http: // qt-project.org/doc/qt-4.8/qstring.html#sprintf). – jlstrecker

Répondre

5

dire que nous commençons par:

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

appeler ensuite:

format.arg("something"); 

Format sera désormais:

"quelque chose:% 1% 2"

... ce qui signifie que vous pouvez construire la chaîne que vous allez.

Modification de l'ordre des placer des marqueurs est possible grâce au mécanisme de traduction de Qt, ce qui vous permet de dire:

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

et l'ajouter à votre table de traduction et d'avoir les paramètres dans un ordre différent pour les différentes langues.

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"; 

avec traduction allemande "Das ist Datum:% 2.% 1.% 3": dateString = "Das ist Datum: 1.12.2010"

4

Une chose à ajouter à sje397 réponse:

lorsque votre application vous pouvez avoir une chaîne comme ça:

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

donc lorsque vous appelez

formatInAnOtherLanguage.arg("something"); 

formatInAnOtherLanguage sera

"%3 something %2" 

C'est le principal avantage de la fonction arg sur la fonction sprintf

Questions connexes