Название: [4.x.x] Как QString вывести %n? Отправлено: Пантер от Ноябрь 08, 2010, 11:54 Возник вопрос. Есть такой код:
QString ("%1 %1").arg ("etc") Вопрос в том, как заэскейпить первый %1, чтобы заменился второй? Поиск в ассистенте ничего не дал. Название: Re: [4.x.x] Как QString вывести %n? Отправлено: Hellraiser от Ноябрь 08, 2010, 12:17 А вот такой вариант не подойдет?
Код
Название: Re: [4.x.x] Как QString вывести %n? Отправлено: Пантер от Ноябрь 08, 2010, 12:22 Неа. Нужно именно заэскейпить.
Название: Re: [4.x.x] Как QString вывести %n? Отправлено: Hellraiser от Ноябрь 08, 2010, 13:01 Разбором в данном случае будет заниматься findArgEscapes из QString. А судя по исходникам - тупо ищется % и следующий за ним символ (цифра). Похоже что в такой постановке задачи - никак.
P.S. Не прокатывает даже извращенный вариант QString("%\x31 %1) Название: Re: [4.x.x] Как QString вывести %n? Отправлено: Пантер от Ноябрь 08, 2010, 13:03 Прихожу к такому же выводу. ИМХО, баг это.
Название: Re: [4.x.x] Как QString вывести %n? Отправлено: zenden от Ноябрь 08, 2010, 13:05 Можно попробовать вставить какой-нибудь невидимый символ между % и цифрой.
Название: Re: [4.x.x] Как QString вывести %n? Отправлено: Пантер от Ноябрь 08, 2010, 13:17 Не во всех случаях проканает.
Название: Re: [4.x.x] Как QString вывести %n? Отправлено: andrew.k от Ноябрь 08, 2010, 13:38 Не во всех случаях проканает. Я тоже с этим боролся, но потом стало ясно, что это и не нужно. Без этого можно легко обойтись. Например, там где у тебя должен быть твой %n выводить его в последнюю очередь. Либо еще вариант. QString( "it's my percent string %%1" ).arg( <n> ); А чего проще не париться и использовать конкатенацию строк. Еще почитай внимательнее про QString::arg( const QString &a1, const QString &a2, const QString &a3 ); и чем отличается от последовательного вызова arg().arg().arg() Пример: QString s("%1 %2 %3"); qDebug() << s.arg( "%1", "%2", "%3" ); qDebug() << s.arg( "%1" ).arg( "%2" ).arg( "%3" ); Вывод: "%1 %2 %3" "%3 %3 %3" Почему так читай в ассистенте. Я уже и так много понаписал :) Название: Re: [4.x.x] Как QString вывести %n? Отправлено: Пантер от Ноябрь 08, 2010, 13:50 qDebug() << s.arg( "%1" ).arg( "%2" ).arg( "%3" );
Выведет "%3 %2 %3" Но это уже оффтоп. Задача решена. Т.е. доказано, что решение отсутствует. Название: Re: [4.x.x] Как QString вывести %n? Отправлено: andrew.k от Ноябрь 08, 2010, 17:43 qDebug() << s.arg( "%1" ).arg( "%2" ).arg( "%3" ); Ты бы скомпилил, да посмотрел прежде чем писать. Как это отсутствует? Я тебе пяток решений привел. Тебе больше подходит arg с несколькими параметрами. что за люди ассистант лень прочитать.Выведет "%3 %2 %3" Но это уже оффтоп. Задача решена. Т.е. доказано, что решение отсутствует. Название: Re: [4.x.x] Как QString вывести %n? Отправлено: Пантер от Ноябрь 08, 2010, 17:48 qDebug() << s.arg( "%1" ).arg( "%2" ).arg( "%3" ); 1. %1 заменится на %1. 2. %1 заменится на %2. 3. Первый %2 заменится на %3 Разве не так? Компилить лень, рассуждения логические. И точно. Нить рассуждений оказалась неверной. :) Мой пример был абстрактный. В конкретной задаче дело обстояло значительно сложнее. Т.е. о наличии в строчке всяких %n изначально не было известно. Название: Re: [4.x.x] Как QString вывести %n? Отправлено: andrew.k от Ноябрь 08, 2010, 18:26 qDebug() << s.arg( "%1" ).arg( "%2" ).arg( "%3" ); 1. %1 заменится на %1. 2. %1 заменится на %2. 3. Первый %2 заменится на %3 Разве не так? Компилить лень, рассуждения логические. И точно. Нить рассуждений оказалась неверной. :) Мой пример был абстрактный. В конкретной задаче дело обстояло значительно сложнее. Т.е. о наличии в строчке всяких %n изначально не было известно. Зачем этот пост, непонятно. |