"это лишь один аргумент"
Следует иметь в виду, что представленные здесь примеры применимы к широкому диапазону сред, но это не означает, что ваша среда входит в их число.
Чтобы получить доступ к отдельному символу в одном из аргументов командной строки, при обращении к массиву argv добавьте второй индекс. Например, при выполнении приведенной ниже программы посимвольно отображаются все аргументы, с которыми она была вызвана.
/* Эта программа посимвольно выводит все аргументы командной строки, с которыми она была вызвана.
*/
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int t, i;
for(t=0; t<argc; ++t) {
i = 0;
while(argv[t][i]) {
cout << argv[t][i];
++i;
}
cout << ' ';
}
return 0;
}
Нетрудно догадаться, что первый индекс массива argv позволяет получить доступ к соответствующему аргументу командной строки, а второй — к конкретному символу этого строкового аргумента.
Обычно аргументы argc и argv используются для ввода в программу начальных параметров, исходных значений, имен файлов или вариантов (режимов) работы программы. В C++ можно ввести столько аргументов командной строки, сколько допускает операционная система. Использование аргументов командной строки придает программе профессиональный вид и позволяет использовать ее в командном файле (исполняемом текстовом файле, содержащем одну или несколько команд).
Как упоминалось выше, при передаче программе числовых данных в качестве аргументов командной строки эти данные принимаются в строковой форме. В программе должно быть предусмотрено их преобразование в соответствующий внутренний формат с помощью одной из стандартных библиотечных функций, поддерживаемых C++. Например, при выполнении следующей программы выводится сумма двух чисел, которые указываются в командной строке после имени программы. Для преобразования аргументов командной строки во внутреннее представление здесь используется стандартная библиотечная функция atof(). Она преобразует число из строкового формата в значение типа double.
/* Эта программа отображает сумму двух числовых аргументов командной строки.
*/
#include <iostream>
#include <cstdlib>
using namespace std;
int main(int argc, char *argv[])
{
double a, b;
if(argc!=3) {
cout << "Использование: add число число\n";
return 1;
}
a = atof(argv[1]);
b = atof(argv[2]);
cout << a + b;
return 0;
}
Чтобы сложить два числа, используйте командную строку такого вида (предполагая, что эта программа имеет имя add).
C>add 100.2 231
Стандартная библиотека C++ включает несколько функций, которые позволяют преобразовать строковое представление числа в его внутренний формат. Для этого используются такие функции, как atoi(), atol() и atof(). Они преобразуют строку в целочисленное значение (типа int), длинное целое (типа long) и значение с плавающей точкой (типа double) соответственно. Использование этих функций (для их вызова необходимо включить в программу заголовочный файл <cstdlib>) демонстрируется в следующей программе.
// Демонстрация использования функций atoi(), atol() и atof().
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int i;
long j;
double k;
i = atoi ("100");
j = atol("100000");
k = atof("-0.123");