| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > консоль сырые аргументы |
| Автор: hexzo 4.10.2011, 16:57 |
| Можно ли получить не распарсенную на массив значений строку, которая пишется после исполняемого файла программы в командной строке. |
| Автор: math64 4.10.2011, 18:54 |
| Начинай программу не с main(), а с WinMain() (для Windows) |
| Автор: borisbn 4.10.2011, 19:24 |
| Сконкатинируй все argv, кроме 0-го в одну строку |
| Автор: math64 4.10.2011, 20:14 |
Между аргументами есть пробелы - число их может быть разным, и это может быть важно. |
| Автор: borisbn 4.10.2011, 20:34 |
| math64, 1. Не очень себе представляю ситуацию, где было бы важно кол-во пробелов между параметрами 2. В консольном приложении в Windows можно заюзать WinMain ? (Щаз без сарказма - действительно не знаю) 3. Как быне не в Windows ? |
| Автор: Alca 4.10.2011, 20:48 |
| Ось какая? Добавлено через 6 минут и 59 секунд Windows: ::GetCommandLine(); Linux: "/proc/self/cmdline" |
| Автор: hexzo 5.10.2011, 09:22 | ||
| Alca Спасибо за вариант с вин апи, думаю он самый подходящий. borisbn
Я тоже не очень представляю себе все такие ситуации, потому что они непредсказуемые. Баг может быть связан со служебными символами, всякими ушками, кавыками. Одиночное ушко самоаннигилируется, пытаясь экранировать следующий символ. Пара ушек попадает в аргумент как одно. Или , например, если поставить в качестве аргумента звёздочку, то парсер мне любезно предоставит в аргументах имена всех файлов в каталоге, вместо моей звёздочки, что мне нафиг не надо. |
| Автор: newbee 5.10.2011, 09:54 |
| Ну на самом деле это шел аргументы разбивает и подставляет вместо звездочек файлы, экранирует всякие символы, объединяет параметры, объединенные кавычками в один аргумент и прочая, и прочая. Не скажу, как в винде, но в линуксе в /proc/$(pidof program)/cmdline ты увидишь уже "распарсенный" вариант аргументов. |
| Автор: hexzo 5.10.2011, 10:02 | ||||
Решение.
newbee
А откуда тогда тогда функция GetCommandLine() берёт строку? |
| Автор: borisbn 5.10.2011, 10:03 | ||||
Не понимаю, о чём вы говорите...
|
| Автор: newbee 5.10.2011, 10:36 | ||||
| Хз, может из астрала. Это ж винда, я про линукс сказала. Добавлено через 3 минуты и 15 секунд borisbn, об этом:
|
| Автор: mes 5.10.2011, 12:31 |
| красиво выглядит строчка, как будто новый оператор --> |
| Автор: newbee 5.10.2011, 13:50 |
| mes, это новый оператор, читается так: argc стремится к нулю. Математики, не бейте)) Сначала хотела выложить более очевидный вариант с рекурсивным main, но решила никого не шокировать. А вон оно как получилось. |
| Автор: azesmcar 5.10.2011, 13:54 | ||
Вопрос удостоился рейтинга 800 на SO http://stackoverflow.com/questions/1642028/what-is-the-name-of-this-operator |
| Автор: mes 5.10.2011, 13:58 |
для положительных.. а для отрицательных можно применить крокодила : ++< Добавлено через 3 минуты и 30 секунд |
| Автор: borisbn 5.10.2011, 15:57 |
|
| Автор: boostcoder 5.10.2011, 17:00 |
| это все керня, а мне вот интересно, что у newbee в файлах types.cpp, tco.cpp, namespace.cpp, file.cpp.orig ;) зы newbee, у тебя в "доме" типичный бабский бардак Добавлено через 7 минут и 21 секунду стало интересно, у кого что в доме лежит? у меня: user@user-pisi:~$ ls -l drwxrwxr-x 8 user user-pisi 4096 2011-09-10 18:55 asio-samples drwxr-xr-x 9 user user-pisi 4096 2011-10-04 11:40 boost-trunk -rw-r--r-- 1 user user-pisi 20170 2011-06-17 05:25 constexpr.cpp -rw-r--r-- 1 user user-pisi 2189 2011-09-24 18:13 coroutine.hpp drwxr-xr-x 2 user user-pisi 4096 2011-09-24 02:13 Desktop -rwxrwx--- 1 user user-pisi 20750 2011-08-05 14:08 gcc_build3.sh -rwxr--r-- 1 user user-pisi 11139 2011-07-13 17:10 gcc_build.sh -rw-r--r-- 1 user user-pisi 663052 2011-09-21 12:35 libjson_7.4.0.zip -rw-r--r-- 1 user user-pisi 642 2011-10-04 22:33 ltotest.tar.gz -rw-r--r-- 1 user user-pisi 1021 2011-07-22 18:35 main2.cpp -rw-r--r-- 1 user user-pisi 331 2011-09-24 21:55 main3.cpp -rw-r--r-- 1 user user-pisi 1927 2011-07-23 00:37 main4.cpp -rw-r--r-- 1 user user-pisi 1196 2011-10-01 18:16 main5.cpp -rw-rw---- 1 user user-pisi 1902 2011-10-04 02:20 main.c -rw-r--r-- 1 user user-pisi 467498 2011-10-04 04:26 out.hpp -rw-r--r-- 1 user user-pisi 31011 2011-06-12 20:39 post2.txt -rw-rw---- 1 user user-pisi 8049 2011-08-16 21:11 post.txt drwxrwxr-x 83 user user-pisi 4096 2011-10-01 19:23 projects drwxrwxr-x 11 user user-pisi 4096 2011-09-25 23:49 schroedinger drwxrwxr-x 7 user user-pisi 4096 2011-09-09 11:49 soci drwxrwxr-x 8 user user-pisi 4096 2011-09-09 11:49 tests -rw-rw---- 1 user user-pisi 408865 2011-01-26 03:37 words.txt |
| Автор: newbee 5.10.2011, 19:16 |
| boostcoder, это не в доме, а в ~/devel/tests. В tco что-то про хвостовую рекурсию, я тут на форуме вопрос задавала, namespace и types - борьба с языком, files - испытывала разные posix/linux флаги работы с файлами и epoll-ами. А в доме лежат docs, pics, video, devel, stuff и старые колготки. |
| Автор: boostcoder 5.10.2011, 22:03 |
| newbee, это все просто детский подкол ;) Добавлено через 1 минуту и 19 секунд желающих поделится информацией о лежащих в доме файлах, нашлось не так уж и много. "какие все серьезные" |
| Автор: volatile 5.10.2011, 23:30 | ||
пусть лучше стремится в другую стророну
потомучто borisbn, не выводил 0-го элемента и мы не будем... |
| Автор: newbee 5.10.2011, 23:44 |
| volatile, не-не-не, демон, не ломай семантику! Давай просто устремим argc к единице? Конечно не так канонично, но что поделать, раз boribn паршивец не удосужился нулевой элемент вывести ((( |
| Автор: borisbn 6.10.2011, 00:00 |
| volatile, newbee, я практически всегда помню, как меня зовут, поэтому и начал с 1-цы. Вот если забуду, кто я есть такой, вто тогда argv[ 0 ] в помощь |
| Автор: borisbn 6.10.2011, 01:01 | ||
Интерны, TBBT, Megadeth, Metallica, Helloween, Total Commander, Opera, Chrome, QIP. Private-секцию не покажу |
| Автор: boostcoder 6.10.2011, 01:04 |
у всех она есть! |
| Автор: borisbn 6.10.2011, 01:04 |
| Чего-то "социальщиной" запахло. Щаз свиттеры и мордокниги пойдут |
| Автор: newbee 6.10.2011, 01:08 |
| Мегадэс, митолика Правилом хорошего тона является то, что программа не знает, как ее зовут. |
| Автор: volatile 6.10.2011, 01:34 | ||
Раз уж пошел такой откровенный оффтоп, и чтоб разрядить несколько обсановку, (программеры по-ходу к вечеру утомились), выкладываю фото своего рабочего стола... http://radikal.ru/F/i020.radikal.ru/1110/ca/80263345df61.jpg.html -- шютка, конечно... |
| Автор: boostcoder 6.10.2011, 02:02 |
| volatile, так принтер нужно было крупным планом! принтер!!! Добавлено через 32 секунды повторюсь... но завтра нас накажут. |
| Автор: fish9370 6.10.2011, 09:50 |
за такую запись по шапке бы дал.. |