LinuxForum.Fans
Тема

C++, аргументы командной строки

Автор: Iced 9 сообщений 4543 просмотров
#56066

Как известно, в языках C/C++ аргументы командной строки обрабатываются примерно так: в функцию main передаются аргументы int argc, char *argv[], то бишь количество строк, и массив самих строк.
C++ унаследовал это от C. Но ведь в C++ есть более совершенные массивы (vector), которые реализованы через классы, более удобно используемые, более ошибкоустойчивые, и т.п... И есть более удобные строки (класс string). Так почему аргументы командной строки передаются по старинке? :)

Как перевести двумерный массив char *argv[] в вектор строк, у меня вопроса не возникает, с этим я справлюсь. =) Если нужно будет. Но почему разработчики C++ не встроили это в сам язык? Может, я чего-то не понимаю просто? =^_^= Наверное, есть причина?

P.S. Больно ногами не пинайте, я кодер начинающий...

#56092

А char *argv[] это разве не массив указателей?

#56093

Iced, вектор - это который шаблон из STL?

#56108

SUSE_user, он самый.

SkaarjZR написал:
А char *argv[] это разве не массив указателей?

Ну да. Массив указателей на начала строк... массив строк, иначе говоря.
Можно это ещё назвать указателем на первый элемент массива, и это тоже будет правильно...

Что конкретно вы спрашивали? %)

#56117

std::vector, как и std::string еще подключать надо :)

#56134
Iced написал:
Но ведь в C++ есть более совершенные массивы (vector)

нету. в языке C++ нет никаких векторов. Они есть в стандартной библиотеке шаблонов (STL). Уж не знаю как это по стандарту, но по факту - это не часть языка. Кроме того, программы не работают сами по себе, они работают в операционной системе, а операционные системы MS-DOS, Windows и Linux передают аргументы именно в таком виде. А принимают целое число от 0, до 255. Т.ч. - вектор использовать не получится...

#56141

drBatty, спасибо за объяснение. =) Примерно это я и ожидал услышать.

drBatty написал:
Уж не знаю как это по стандарту, но по факту - это не часть языка.

То есть фактически называется она неправильно, и никакой это не стандарт?

В общем, вопрос снят. =)

#56155
Iced написал:

Что конкретно вы спрашивали? %)

Это и спрашивал, просто не видел никогда такого метода.

#56284
Iced написал:
То есть фактически называется она неправильно, и никакой это не стандарт?

правильно называется - это разные стандарты wink

Войдите или зарегистрируйтесь, чтобы ответить.