Аватар для Хулиган
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737

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

15.11.2015, 16:35. Показов 15457. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru