Russian Qt Forum

Qt => Общие вопросы => Тема начата: QuAzI от Декабрь 13, 2010, 18:11



Название: Quoted string
Отправлено: QuAzI от Декабрь 13, 2010, 18:11
Есть ли какой-нибудь Escape-код для \" или функция, помещающая строку в кавычки?
А то на винде почему-то если передавать маску файлов когда нужны все в виде * перебор файлов не работает. Если передать в кавычках "*", то на ура. '*' не подходит.
Пробовал \" \q \Q - ничего не подошло.


Название: Re: Quoted string
Отправлено: lit-uriy от Декабрь 13, 2010, 19:16
ничё не понял. где это нужно? В коде Си/Си++?

>>А то на винде почему-то если передавать маску файлов
куда передавать?


Название: Re: Quoted string
Отправлено: twp от Декабрь 13, 2010, 19:28
Функции такой нет. Но странно почему не работает \"
Может что-то не так используется?
Такой код сработает?

Код:
QString s = QLatin1String("\"%1\"");
QString filter = s.agr(mask);


Название: Re: Quoted string
Отправлено: QuAzI от Декабрь 14, 2010, 01:10
Внезапно не катит такой код
Код:
    findparam << "\"*\"" << dir ;    
    proc->start(findproc, findparam );   
Но зато без малейших проблем
Код:
    QString mask("\"*\"");
    findparam << mask << dir ;   
    proc->start(findproc, findparam );   


Название: Re: Quoted string
Отправлено: Fat-Zer от Декабрь 14, 2010, 01:15
Внезапно не катит такой код
Код:
    findparam << "\"*\"" << dir ;    
    proc->start(findproc, findparam );   
Но зато без малейших проблем
Код:
    QString mask("\"*\"");
    findparam << mask << dir ;   
    proc->start(findproc, findparam );   
Код:
    findparam << QString("\"*\"") << dir ;    
    proc->start(findproc, findparam );   
и ещё к первому сообщению:
"*" - строка
'*' - символ


Название: Re: Quoted string
Отправлено: QuAzI от Декабрь 16, 2010, 01:09
На ломанном буржуйском удалось найти правду quote in command prompts (http://www.qtcentre.org/threads/36984-quote-in-command-promps?p=170258#post170258)
Цитировать
Filename globbing

Wildcards on the command-line are expanded by the command-line interpreter. If you wish to disable this filename globbing, then add

    int _CRT_glob = 0;

to the beginning of the main program file.
Хотя я уже извратился. В вызывающей программе молочу "\"*\"" и получаю на входе второй программы \"*\" (точнее тут ещё один прикол - в юнихах "*", а в винде \"*\") после чего через replace душу \"  и уже итоговая строчка нормально хавается дальше по коду.
Положить в строку "*" (именно в таком виде, без экранирующих слешей) под виндой не удалось. Зато не закрытую двойными кавычками маску второе приложение без int _CRT_glob = 0 превращает в список файлов текущей директории - специфика gcc.