qDebug() << QString("B: %4%1%2%3") .arg(b, c, d, a);

works

Philippe

On Mon, 5 Jun 2017 00:41:34 +1000
"Tony Rietwyk" <t...@rightsoft.com.au> wrote:

> > Sent: Sunday, 4 June 2017 11:26 PM
> > 
> > Hello (No, this is not spam):
> > 
> > For me, the following:
> > 
> >    QString a = "XXX";
> >    QString b = "";
> >    QString c = "";
> >    QString d = "1";
> >    qDebug() << QString("A: %1%2%3%4") .arg(a) .arg(b) .arg(c) .arg(d);
> >    qDebug() << QString("B: %4%1%2%3") .arg(b) .arg(c) .arg(d) .arg(a);
> > 
> > prints this:
> > 
> >    "A: XXX1"                                # As expected.
> >    "B: XXX"                         # Expected: XXX1.
> > 
> > I think the 'B:' line demonstrates a bug.
> > Where is the '1'?
> > 
> > Qt 5.7
> > RedHat Enterprise Linux 6.8
> > gcc: 4.9.3
> > 
> > Bill
> 
> Hi Bill, 
> 
> For the second one, consider that after arg(d) is executed, the input string 
> to arg(a) is "B: %41".  Since 41 is now "the lowest numbered place marker", 
> "XXX" gets substituted.  It is easy to mistakenly think that QString 
> magically treats multiple .args as somehow being indexed.  I think the 
> documentation for QString.arg should warn about your example, and the case 
> when substituted strings contain %<number>. 
> 
> Regards, Tony
> 
> 
> _______________________________________________
> Interest mailing list
> Interest@qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest


_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to