Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> консоль сырые аргументы 
V
    Опции темы
hexzo
Дата 4.10.2011, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



Можно ли получить не распарсенную на массив значений строку, которая пишется после исполняемого файла программы в командной строке.
PM MAIL   Вверх
math64
Дата 4.10.2011, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 8
Всего: 72



Начинай программу не с main(), а с WinMain() (для Windows)

Это сообщение отредактировал(а) math64 - 4.10.2011, 18:54
PM   Вверх
borisbn
Дата 4.10.2011, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



Сконкатинируй все argv, кроме 0-го в одну строку


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
math64
Дата 4.10.2011, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 8
Всего: 72



Цитата(borisbn @  4.10.2011,  19:24 Найти цитируемый пост)
Сконкатинируй все argv, кроме 0-го в одну строку

Между аргументами есть пробелы - число их может быть разным, и это может быть важно.  
PM   Вверх
borisbn
Дата 4.10.2011, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



math64, 
1. Не очень себе представляю ситуацию, где было бы важно кол-во пробелов между параметрами
2. В консольном приложении в Windows можно заюзать WinMain ? (Щаз без сарказма - действительно не знаю)
3. Как быне не в Windows ?


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Alca
Дата 4.10.2011, 20:48 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Ось какая?

Добавлено через 6 минут и 59 секунд
Windows:
    ::GetCommandLine();

Linux:
    "/proc/self/cmdline"


--------------------
PM WWW ICQ Skype Jabber   Вверх
hexzo
Дата 5.10.2011, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



Alca Спасибо за вариант с вин апи, думаю он самый подходящий.

borisbn
Цитата

1. Не очень себе представляю ситуацию, где было бы важно кол-во пробелов между параметрами

Я тоже не очень представляю себе все такие ситуации, потому что они непредсказуемые.
Баг может быть связан со служебными символами, всякими ушками, кавыками. Одиночное ушко самоаннигилируется, пытаясь экранировать следующий символ. Пара ушек попадает в аргумент как одно.  Или , например, если поставить в качестве аргумента звёздочку, то парсер мне любезно предоставит в аргументах имена всех файлов в каталоге, вместо моей звёздочки, что мне нафиг не надо.
PM MAIL   Вверх
borisbn
Дата 5.10.2011, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



Цитата(hexzo @  5.10.2011,  09:22 Найти цитируемый пост)
если поставить в качестве аргумента звёздочку, то парсер мне любезно предоставит в аргументах имена всех файлов в каталоге, вместо моей звёздочки

 smile 


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
newbee
Дата 5.10.2011, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: 4
Всего: 19



Цитата(hexzo @  5.10.2011,  10:22 Найти цитируемый пост)
то парсер мне любезно предоставит в аргументах имена всех файлов в каталоге, вместо моей звёздочки, что мне нафиг не надо
Ну на самом деле это шел аргументы разбивает и подставляет вместо звездочек файлы, экранирует всякие символы, объединяет параметры, объединенные кавычками в один аргумент и прочая, и прочая. Не скажу, как в винде, но в линуксе в /proc/$(pidof program)/cmdline ты увидишь уже "распарсенный" вариант аргументов.


--------------------
You're face to face
With man who sold the world
PM   Вверх
hexzo
Дата 5.10.2011, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



Решение.
Код

WCHAR* cmds = GetCommandLine();  
QString str = QString::fromWCharArray(cmds);
qDebug()<<str;


newbee
Цитата

Ну на самом деле это шел аргументы разбивает и подставляет вместо звездочек файлы, экранирует всякие символы, объединяет параметры, объединенные кавычками в один аргумент и прочая, и прочая.

А откуда тогда тогда функция GetCommandLine() берёт строку?
PM MAIL   Вверх
borisbn
Дата 5.10.2011, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



Не понимаю, о чём вы говорите...
Код

#include <iostream>

int main(int argc, char *argv[])
{
    for ( int i = 1; i < argc; i++ )
    {
        std::cout << argv[ i ] << std::endl;
    }
}

Цитата

D:\Work\QProjects\console\Debug>console.exe ' \n *
'
\n
*



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
newbee
Дата 5.10.2011, 10:36 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: 4
Всего: 19



Цитата(hexzo @  5.10.2011,  11:02 Найти цитируемый пост)
А откуда тогда тогда функция GetCommandLine() берёт строку? 
Хз, может из астрала. Это ж винда, я про линукс сказала.

Добавлено через 3 минуты и 15 секунд
borisbn, об этом:
Код

int main(int argc,char **argv){
 while(argc-->0)
  printf("%s\n",argv[argc]);
 return 0;}


Цитата

./test *
types.cpp
types
tmp
thread.c
test_textfile
test.s
test.h
test.cpp
test2.s
test2.c
test2
test
tco.s
tco.cpp
tco2.s
tco1.s
tco
struct.cpp
struct
string
stdin.c
stdin
split.cpp
split
speed
sort_cxx
sort.cpp
sort.c
sort_c
so
sig.c
sig
sh
qt
ptr.cpp
ptr
pragma.h
pragma.cpp
pragma
pktparse
pipe.c
pipe
parser.c
parser
namespace.cpp
namespace
makefile.tar
makefile
macro.c
macro
list.cpp
list
liblib.so
lib.cpp
lib
jmp.c
input.cpp
input
hello.cpp
hello.back
hello
find.c
find
filename
file.cpp.orig
file.cpp
file.c
filec
file
div.c
div
delete.cpp
delete
date.c
date
break.cpp
break
bin.cpp
bin
b.c
a.out
alloc.cpp
alloc
a.c
a9.cpp
a9
a




--------------------
You're face to face
With man who sold the world
PM   Вверх
mes
Дата 5.10.2011, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



 smile 
Цитата(newbee @  5.10.2011,  09:36 Найти цитируемый пост)
 while(argc-->0)

красиво выглядит строчка, как будто новый оператор -->  smile .. никогда раньше не замечал... 


Это сообщение отредактировал(а) mes - 5.10.2011, 12:31


--------------------
PM MAIL WWW   Вверх
newbee
Дата 5.10.2011, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: 4
Всего: 19



 smile 
mes, это новый оператор, читается так: argc стремится к нулю. Математики, не бейте)) Сначала хотела выложить более очевидный вариант с рекурсивным main, но решила никого не шокировать. А вон оно как получилось.


--------------------
You're face to face
With man who sold the world
PM   Вверх
azesmcar
Дата 5.10.2011, 13:54 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(mes @  5.10.2011,  12:31 Найти цитируемый пост)
красиво выглядит строчка, как будто новый оператор -->  smile .. никогда раньше не замечал... 

Вопрос удостоился рейтинга 800 на SO smile 
http://stackoverflow.com/questions/1642028...f-this-operator

PM   Вверх
mes
Дата 5.10.2011, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



smile 
Цитата(newbee @  5.10.2011,  12:50 Найти цитируемый пост)
это новый оператор, читается так: argc стремится к нулю

для положительных.. а для отрицательных  можно применить крокодила : ++<
 smile

Добавлено через 3 минуты и 30 секунд
Цитата(azesmcar @  5.10.2011,  12:54 Найти цитируемый пост)
Вопрос удостоился рейтинга 800 на SO  

  smile 


--------------------
PM MAIL WWW   Вверх
borisbn
Дата 5.10.2011, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



Цитата(azesmcar @  5.10.2011,  13:54 Найти цитируемый пост)
Вопрос удостоился рейтинга 800 на SO

user posted image smile 


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
boostcoder
Дата 5.10.2011, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



это все керня, а мне вот интересно, что у newbee в файлах types.cpp, tco.cpp, namespace.cpp, file.cpp.orig ;)

зы
newbee, у тебя в "доме" типичный бабский бардак smile 


Добавлено через 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

PM WWW   Вверх
newbee
Дата 5.10.2011, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: 4
Всего: 19



boostcoder, это не в доме, а в ~/devel/tests. В tco что-то про хвостовую рекурсию, я тут на форуме вопрос задавала, namespace и types - борьба с языком, files - испытывала разные posix/linux флаги работы с файлами и epoll-ами. А в доме лежат docs, pics, video, devel, stuff и старые колготки.


--------------------
You're face to face
With man who sold the world
PM   Вверх
boostcoder
Дата 5.10.2011, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



newbee, это все просто детский подкол ;)

Добавлено через 1 минуту и 19 секунд
желающих поделится информацией о лежащих в доме файлах, нашлось не так уж и много.

"какие все серьезные"
PM WWW   Вверх
volatile
Дата 5.10.2011, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Цитата(newbee @  5.10.2011,  13:50 Найти цитируемый пост)
это новый оператор, читается так: argc стремится к нулю

пусть лучше стремится в другую стророну

Код

while(0 <-- argc)
    printf("%s\n",argv[argc]);

потомучто borisbn, не выводил 0-го элемента
Цитата(borisbn @  5.10.2011,  10:03 Найти цитируемый пост)
 for ( int i = 1; 

и мы не будем... smile 
PM MAIL   Вверх
newbee
Дата 5.10.2011, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: 4
Всего: 19



volatile, не-не-не, демон, не ломай семантику! Давай просто устремим argc к единице? Конечно не так канонично, но что поделать, раз boribn паршивец не удосужился нулевой элемент вывести (((


--------------------
You're face to face
With man who sold the world
PM   Вверх
borisbn
Дата 6.10.2011, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



volatile, newbee, я практически всегда помню, как меня зовут, поэтому и начал с 1-цы. Вот если забуду, кто я есть такой, вто тогда argv[ 0 ] в помощь


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
borisbn
Дата 6.10.2011, 01:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



Цитата(boostcoder @  5.10.2011,  22:03 Найти цитируемый пост)
желающих поделится информацией о лежащих в доме файлах, нашлось не так уж и много.

Интерны, TBBT, Megadeth, Metallica, Helloween, Total Commander, Opera, Chrome, QIP.
Private-секцию не покажу smile


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
boostcoder
Дата 6.10.2011, 01:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(borisbn @  6.10.2011,  01:01 Найти цитируемый пост)
Private-секцию не покажу

у всех она есть! smile 
PM WWW   Вверх
borisbn
Дата 6.10.2011, 01:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



Чего-то "социальщиной" запахло. Щаз свиттеры и мордокниги пойдут smile


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
newbee
Дата 6.10.2011, 01:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: 4
Всего: 19



Мегадэс, митолика  smile  Лучше бы ты вообще ничего не показывал))

Цитата(borisbn @  6.10.2011,  01:00 Найти цитируемый пост)
я практически всегда помню, как меня зовут, поэтому и начал с 1-цы. Вот если забуду, кто я есть такой, вто тогда argv[ 0 ] в помощь 
Правилом хорошего тона является то, что программа не знает, как ее зовут.


--------------------
You're face to face
With man who sold the world
PM   Вверх
volatile
Дата 6.10.2011, 01:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Цитата(boostcoder @  5.10.2011,  22:03 Найти цитируемый пост)
поделится информацией о лежащих в доме файлах, нашлось не так уж и много

Раз уж пошел такой откровенный оффтоп, и чтоб разрядить несколько обсановку, (программеры по-ходу к вечеру утомились), выкладываю фото своего рабочего стола...
user posted image
--
шютка, конечно... smile 

Это сообщение отредактировал(а) volatile - 6.10.2011, 01:37
PM MAIL   Вверх
boostcoder
Дата 6.10.2011, 02:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



volatile, так принтер нужно было крупным планом! принтер!!!

Добавлено через 32 секунды
повторюсь... но завтра нас накажут.
PM WWW   Вверх
fish9370
Дата 6.10.2011, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: -1
Всего: 1



Цитата(newbee @  5.10.2011,  10:36 Найти цитируемый пост)
argc-->0


за такую запись по шапке бы дал..


--------------------
undefined
PM MAIL WWW ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0842 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.