Как известно, в языках C/C++ аргументы командной строки обрабатываются примерно так: в функцию main передаются аргументы int argc, char *argv[], то бишь количество строк, и массив самих строк.
C++ унаследовал это от C. Но ведь в C++ есть более совершенные массивы (vector), которые реализованы через классы, более удобно используемые, более ошибкоустойчивые, и т.п... И есть более удобные строки (класс string). Так почему аргументы командной строки передаются по старинке? :)
Как перевести двумерный массив char *argv[] в вектор строк, у меня вопроса не возникает, с этим я справлюсь. =) Если нужно будет. Но почему разработчики C++ не встроили это в сам язык? Может, я чего-то не понимаю просто? =^_^= Наверное, есть причина?
P.S. Больно ногами не пинайте, я кодер начинающий...
C++, аргументы командной строки
А char *argv[] это разве не массив указателей?
Iced, вектор - это который шаблон из STL?
SUSE_user, он самый.
А char *argv[] это разве не массив указателей?
Ну да. Массив указателей на начала строк... массив строк, иначе говоря.
Можно это ещё назвать указателем на первый элемент массива, и это тоже будет правильно...
Что конкретно вы спрашивали? %)
std::vector, как и std::string еще подключать надо :)
Но ведь в C++ есть более совершенные массивы (vector)
нету. в языке C++ нет никаких векторов. Они есть в стандартной библиотеке шаблонов (STL). Уж не знаю как это по стандарту, но по факту - это не часть языка. Кроме того, программы не работают сами по себе, они работают в операционной системе, а операционные системы MS-DOS, Windows и Linux передают аргументы именно в таком виде. А принимают целое число от 0, до 255. Т.ч. - вектор использовать не получится...
drBatty, спасибо за объяснение. =) Примерно это я и ожидал услышать.
Уж не знаю как это по стандарту, но по факту - это не часть языка.
То есть фактически называется она неправильно, и никакой это не стандарт?
В общем, вопрос снят. =)
Что конкретно вы спрашивали? %)
Это и спрашивал, просто не видел никогда такого метода.
То есть фактически называется она неправильно, и никакой это не стандарт?
правильно называется - это разные стандарты wink