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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> парсинг аргументов командной строки 
V
    Опции темы
_hunter
  Дата 13.2.2008, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



Добрый день.

Подскажите как парсится командная строка в никсах.
Т.е. если команда такая: "some_progrma qwe      rty" (т.е. между параметрами несколько пробелов (возможно табов)) -- что будет в argv? -- "qwe" и "rty" или какие-то вариации на тему пробелов?

С уважением...

Это сообщение отредактировал(а) _hunter - 13.2.2008, 14:42


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
JackYF
Дата 13.2.2008, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

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



Цитата(_hunter @  13.2.2008,  13:39 Найти цитируемый пост)
"qwe" и "rty"

ЕМНИП, да. А вообще можно было и самому проверить вроде бы smile


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
_hunter
Дата 13.2.2008, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



самому проверить сложно -- это Linux ставить нужно...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
JackYF
Дата 13.2.2008, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

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



Цитата(_hunter @  13.2.2008,  15:23 Найти цитируемый пост)
это Linux ставить нужно... 

а. ну сейчас проверю...


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
MAKCim
Дата 13.2.2008, 18:02 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

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



Цитата(_hunter @  13.2.2008,  16:23 Найти цитируемый пост)
самому проверить сложно -- это Linux ставить нужно... 

разделители не учитываются


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
mr_oz
Дата 13.2.2008, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



точно не знаю но вот есть цитата... 

Цитата


:  parser, generic parser, UNIX, ARGC, ARGV
----------------:
--
-- Abstract     :  
--
--|   PARSER is a generic parser that functions in a manner similar to
--| the ARGC/ARGV parser of UNIX.  It contains one procedure, PARSE,
--| which accepts a string as input and returns ARGC, a count of the number
--| of tokens in the string, and ARGV, a vector of strings, each string
--| containing a token.
--|
--|   PARSER is instantiated with two strings (DEL for DELIMITER and
--| DEL_TOKEN for DELIMITER_TOKEN).  The DEL string is composed of characters
--| which delimit each token (and are not a part of the token).  All
--| characters less than space are automatically delimiters, and the DEL
--| string should contain at least one character (such as a space).
--| DEL_TOKEN is a string composed of characters which delimit tokens and
--| which are tokens themselves.  If "=" is a DEL_TOKEN, for example, then
--| "CAT= DOG" is composed of three tokens, "CAT", "=", and "DOG", where if
--| "=" is a DEL, then "CAT= DOG" is composed of two tokens, "CAT" and "DOG".
--| This assumes that the space character is a DEL.
--|
--|   PARSER may also be instantiated with ARGC_LIMIT, which indicates the
--| maximum number of tokens allowed.  If this limit is exceeded, then the
--| last ARGV token contains the remainder of the string.  The default value
--| of ARGC_LIMIT is 20.
--|
--|   ARG_STRING_LENGTH is the last instantiation option for PARSER.  It
--| indicates the maximum length of an ARGV string, and it defaults to 80.
--|


точно не знаю, тебя это интересует.
PM MAIL   Вверх
JackYF
Дата 13.2.2008, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

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



Цитата

jackyf@work:~/temp/tests$ cat test.cpp
#include <iostream>
int main(int argc, char* argv[])
{
    for (int i = 0; i < argc; ++i)
    {
  std::cout << '|' << argv[i] << '|' << std::endl;
    }
}

jackyf@work:~/temp/tests$ ./test.e    aaa        bbb
|./test.e|
|aaa|
|bbb|



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
nickless
Дата 13.2.2008, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


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

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





--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
bsa
Дата 14.2.2008, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Если я не ошибаюсь, аргументы парсются так же, как и для консольных приложений Windows. Т.е. если взять параметр в кавычки (одинарные или двойные) или экранировать спецсимволы обратным слешем, то будут переданы в том числе и пробелы:
Код
$ ./mytestprog abc def ghi jkl
abc
def
ghi
jkl
$ ./mytestprog "abc def" 'ghi jkl'
abc def
ghi jkl
$ ./mytestprog abc def\ ghi jkl
abc
def ghi
jkl

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

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

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


 




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


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

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