Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.72/76: Рейтинг темы: голосов - 76, средняя оценка - 4.72
 Аватар для Хулиган
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737

QString экранирование

15.11.2015, 16:35. Показов 15388. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Если в QChar записать '\\' все отлично работает и этот символ выводится как '\'
но если его добавить в QString, то на выводе он так и остается '\\'
в std::string работает все как надо. Как это исправить?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.11.2015, 16:35
Ответы с готовыми решениями:

QFile::rename(QString name1, QString name2) не работает под Win
Добрый день! Столкнулся с проблемой: QFile::rename(QString name1, QString name2) не работает под Windows 7. На CentOS 6 нормально -...

Как разбить QString строку на подстроки, т.е. на qlist <qstring> ?
Как разбить QString строку: &quot;/michaeltosell&quot;, &quot;/vorago&quot;, &quot;/yanochka147&quot;, &quot;gertylohhg&quot;, на подстроки, т.е. на qlist &lt;qstring&gt; ? ...

Cтрока: Как сконвертировать QString в const QString?
Доброго времени суток. Как сконвертировать QString в const QString

30
 Аватар для Хулиган
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
16.11.2015, 02:19  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от gromo Посмотреть сообщение
a test.exe всего-навсего выводит в stdout свой argv[1]?
весь массив(кроме имени файла)
0
 Аватар для gromo
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
16.11.2015, 02:21
Хулиган, значит проблема в выводе внутри test.exe ибо через метод write на вход экзешника данные передаются в сыром виде, никаких трансформаций и жкранирования над ними не производится.
1
 Аватар для Хулиган
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
16.11.2015, 02:39  [ТС]
Цитата Сообщение от gromo Посмотреть сообщение
write
так я write не использую,
test.exe написал потому что devcon.exe работал не так как надо, значит проблема не в тестовой апп

Добавлено через 12 минут
Цитата Сообщение от CriDos Посмотреть сообщение
Только что проверил (Qt5.5.1_vs2015), отлично всё передаётся, в аргументах запущенного приложения передаётся «VVV\VVV»
не работает( qt.5.5.0
0
Поклонник Qt
 Аватар для CriDos
314 / 210 / 41
Регистрация: 09.11.2013
Сообщений: 336
Записей в блоге: 1
16.11.2015, 02:42
C++ (Qt)
1
2
3
4
5
        QProcess process;
    process.setNativeArguments(R"(/c echo VVV\VVV)");
    process.start("cmd.exe");
    process.waitForFinished();
    qDebug().noquote() << process.readAll(); //VVV\VVV
Как видим, консолька вернула нам то, что мы ей и передали, т.е. VVV\VVV.
Так что проблема на стороне целевого приложения, которое запускается.

Добавлено через 2 минуты
Цитата Сообщение от Хулиган Посмотреть сообщение
не работает( qt.5.5.0
Тогда обновляйся или откатывайся
1
 Аватар для Хулиган
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
16.11.2015, 02:50  [ТС]
Цитата Сообщение от CriDos Посмотреть сообщение
Как видим, консолька вернула нам то, что мы ей и передали, т.е. VVV\VVV.
хм.. ну так qDebug::noquote() заменяет \\ на \, дает возможность увидеть желаемое

есть консольный вариант дипетчера устройств devcon.exe
его вызов в консоли:
devcon.exe drivernodes PCI\VEN_8086^&DEV_2845^&SUBSYS_01361025^ &REV_03
используя ваш вариант, на самом деле туда передается
PCI\\VEN_8086^&DEV_2845^&SUBSYS_01361025 ^&REV_03
а это уже не то что требуется.
0
Поклонник Qt
 Аватар для CriDos
314 / 210 / 41
Регистрация: 09.11.2013
Сообщений: 336
Записей в блоге: 1
16.11.2015, 02:56
Цитата Сообщение от Хулиган Посмотреть сообщение
ну так qDebug::noquote()
Ничего он не заменяет.
Он лишь выводит всё без экранирования.
А вот сам qDebug() добавляет экранирования к существующим слешам и не только...
C++ (Qt)
1
2
3
4
5
    QProcess process;
    process.setNativeArguments(R"(/c echo VVV\VVV)");
    process.start("cmd.exe");
    process.waitForFinished();
    std::cout << process.readAll().toStdString(); //VVV\VVV
с std::cout результат тот же.
Сейчас даже посмотрю, чего там с devcon'ом не получается
1
 Аватар для Хулиган
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
16.11.2015, 03:00  [ТС]
Цитата Сообщение от CriDos Посмотреть сообщение
с std::cout результат тот же
ну так test.exe и выводит через std::cout
0
Поклонник Qt
 Аватар для CriDos
314 / 210 / 41
Регистрация: 09.11.2013
Сообщений: 336
Записей в блоге: 1
16.11.2015, 03:14
Лучший ответ Сообщение было отмечено Хулиган как решение

Решение

Выполнил (я хз как используется drivernodes):
C++ (Qt)
1
2
3
4
5
    QProcess process;
    process.setNativeArguments(R"(find *PCI\VEN_8086&DEV_1C22*)");
    process.start("devcon64.exe");
    process.waitForFinished();
    std::cout << process.readAll().toStdString();
Получил в результате:
Bash
1
2
3
PCI\VEN_8086&DEV_1C22&SUBSYS_844D1043&REV_05\3&11583659&0&FB: Intel(R) 6 Series/
C200 Series Chipset Family SMBus Controller - 1C22
1 matching device(s) found.
Так что, тут либо неверно формируются команды, либо багнутая версию Qt.
1
 Аватар для Хулиган
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
16.11.2015, 03:35  [ТС]
CriDos, заработало
0
Поклонник Qt
 Аватар для CriDos
314 / 210 / 41
Регистрация: 09.11.2013
Сообщений: 336
Записей в блоге: 1
16.11.2015, 03:37
Цитата Сообщение от Хулиган Посмотреть сообщение
заработало
Что было то?
Интересно же
1
 Аватар для Хулиган
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
16.11.2015, 04:00  [ТС]
CriDos,

Не по теме:

одновременно чувство радости и подавленности

PCI\VEN_8086^&DEV_2845^&SUBSYS_01361025^ &REV_03
^ этот символ портил всю картину, разбирался с логами программы для обновления драйверов и там вот таким образом была записана строка, в консоль я вводил правильно а в свой код копировал из лога:cry: повезло что взял ваш пример и устройство не было найдено, я заменил команду на find * для вывода всех устройств, они все вывелись в qDebug, откуда я скопировал правильный путь и заработало...2 суток я сидел и не мог понять что вообще происходит, давно такого не было, как дальше жить...



Добавлено через 13 минут

Не по теме:

окончательно отчаившись, я пошел писать на винапи запуск процесса! я плакал кровавыми слезами:cry: и в это время услышал сигнал сообщения с форума:dance:, лучик надежды блеснул в конце тонеля страданий и боли, открыв его я узрел истину:swoon:, хорошо что это произошло до того как винапи разрушило мой разум...спасибо)

1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.11.2015, 04:00

QList <QPair <QString, QString> > - сортировка пузырьком
Возможно ли? =) Есть список городов с их идентификационным номером, например: 21:Ульяновск;1:Москва;15:Одесса;2:Назарово;3:Ростов ...

Поиск в QMap<QString, QString> по регекспу
Есть QMap&lt;QString, QString&gt;. Есть некоторое регулярное выражение, по которому требуется найти все его вхождения в ключи. Как это возможно...

'QList<QListWidgetItem*>' в 'QList<QPair<QString, QString> >*'
Перевести 'QList&lt;QListWidgetItem*&gt;' в 'QList&lt;QPair&lt;QString, QString&gt; &gt;*' ?????

Экранирование - аналог addBindValue
Всем привет! Вопрос следующий Работаю с БД (SQLite, Qt) Хочу сделать универсальную функцию для выполнения операций insert ...

QRegExp экранирование последовательности
Возникла следующая проблема с экранированием. QRegExp rx(&quot;\\Q+-*/\\E&quot;); QString str = &quot;+-*/&quot;; str =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru