char *cmd;
strcpy(cmd=new char [strlen(GetCommandLine())+1],GetCommandLine());
// теперь в кмд у тебя копия коммандной строки для данного процесса.
// Теперь ее (строку) можно безбоязненно (и безболезненно) изменять.
Запуск с параметром
Привет. Вот в C++Builder'e есть функции ParamStr() и ParamCount(). А есть что-либо подобное чисто в C/C++. Спасибо.
Цитата: Pelican
Привет. Вот в C++Builder'e есть функции ParamStr() и ParamCount(). А есть что-либо подобное чисто в C/C++. Спасибо.
Вообще-то не у всех есть Билдер, поэтому стоит пояснить, что делают твои функции!
Цитата:
ParamStr returns the parameter from the command line that corresponds to Index, or an empty string if Index is greater than ParamCount . For example, an Index value of 2 returns the second command-line parameter.
На WinAPI (юзай в чем хочешь, главное -- платформа win32) есть функция
LPTSTR GetCommandLine(void);
Код:
LPTSTR == char * или wchar_t * в зависимости от факта использования юникода.
на стандартном С(++), в том числе под WIN/DOS/*NIX для этого есть специальная функция --
int main(int argc, char* argv[])
Здесь:[INDENT]argc -- количество параметров[/INDENT][INDENT]argv[] -- массив указателей на параметры [/INDENT]
Если я не ошибаюсь, argv[0] -- это непосредственно полное имя запущеного файла. (Путь + .ЕХЕ)
P.S. А вот фразы "чисто в С++" я реально чисто конкретно не понял.
Цитата: KPI Student
P.S. А вот фразы "чисто в С++" я реально чисто конкретно не понял.
"Чистый C/C++" - тот самый язык, который когда-то придумал(и) Ричи/Страуструп. Вот, что я имел в виду. Спасибо за ответ.:)
Цитата: KPI Student
Вообще-то не у всех есть Билдер, поэтому стоит пояснить, что делают твои функции!
Пардон. ParamStr(int Index) возвращает параметр из командной строки, который соответствует указанному индексу, или пустую строку, если индекс больше количества параметров, если индекс равен нулю, тогда возвращается полное имя файла программы.
ParamCount(void) возвращает количество параметров, переданных программе во время запуска через командную строку.