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

/* Эта программа посимвольно выводит все аргументы командной строки, с которыми она была вызвана.

*/

#include

using namespace std;

int main(int argc, char *argv[])

{

 int t, i;

 for(t=0; t

  i = 0;

  while(argv[t][i]) {

   cout << argv[t][i];

   ++i;

  }

  cout << ' ';

 }

 return 0;

}

Нетрудно догадаться, что первый индекс массива argv позволяет получить доступ к соответствующему аргументу командной строки, а второй — к конкретному символу этого строкового аргумента.

Обычно аргументы argc и argv используются для ввода в программу начальных параметров, исходных значений, имен файлов или вариантов (режимов) работы программы. В C++ можно ввести столько аргументов командной строки, сколько допускает операционная система. Использование аргументов командной строки придает программе профессиональный вид и позволяет использовать ее в командном файле (исполняемом текстовом файле, содержащем одну или несколько команд).

Передача числовых аргументов командной строки

Как упоминалось выше, при передаче программе числовых данных в качестве аргументов командной строки эти данные принимаются в строковой форме. В программе должно быть предусмотрено их преобразование в соответствующий внутренний формат с помощью одной из стандартных библиотечных функций, поддерживаемых C++. Например, при выполнении следующей программы выводится сумма двух чисел, которые указываются в командной строке после имени программы. Для преобразования аргументов командной строки во внутреннее представление здесь используется стандартная библиотечная функция atof(). Она преобразует число из строкового формата в значение типа double.

/* Эта программа отображает сумму двух числовых аргументов командной строки.

*/

#include

#include

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) соответственно. Использование этих функций (для их вызова необходимо включить в программу заголовочный файл ) демонстрируется в следующей программе.

// Демонстрация использования функций atoi(), atol() и atof().

#include

#include

using namespace std;

int main()

{

 int i;

 long j;

 double k;

 i = atoi ("100");

 j = atol("100000");

 k = atof("-0.123");

 cout << i << ' ' << j << ' ' << k;

 cout << ' \n';

 return 0;

}

Результаты выполнения этой программы таковы.

100 100000 -0.123

Функции преобразования строк полезны не только при передаче числовых данных программе через аргументы командной строки, но и в ряде других ситуаций.

Инструкция return

До сих пор (начиная с главы 2) мы использовали инструкцию return без подробных разъяснений. Напомним, что инструкция return выполняет две важные операции. Во-первых, она обеспечивает немедленное возвращение управления к инициатору вызова функции. Во-вторых, ее можно использовать для передачи значения, возвращаемого функцией. Именно этим двум операциям и посвящен данный раздел.

Завершение функции
Перейти на страницу:

Все книги серии Изучайте C++ с профессионалами

Похожие книги