Язык программирования C++. Вводный курс


Функция main(): разбор параметров командной строки - часть 2


switch ( pchar[ 0 ] ) {

   case '-': {

     //  -h, -d, -v, -l, -o

   }

 

   default: {

     // обработаем максимальный размер для опции -1

     //            имя выходного файла для       -o

     //            имена входных файлов ...

   }

}

Реализуем обработку двух случаев пункта 2.

Если строка начинается с дефиса, мы используем switch по следующему символу для определения конкретной опции. Вот общая схема этой части программы:

case '-': {

  switch( pchar[ 1 ] )

  {

    case 'd':

      // обработка опции debug

      break;

 

    case 'v':

      // обработка опции version

      break;

 

    case 'h':

      // обработка опции help

      break;

 

    case 'o':

      // приготовимся обработать выходной файл

      break;

 

    case 'l':

      // приготовимся обработать макс.размер

      break;

 

    default:

      // неопознанная опция:

      // сообщить об ошибке и завершить выполнение

  }

}

Опция -d

задает необходимость отладки. Ее обработка заключается в присваивании переменной с объявлением

bool debug_on = false;

значения true:

case 'd':

  debug_on = true;

break;

В нашу программу может входить код следующего вида:

if ( debug_on )

    display_state_elements( obj );

Опция -v

выводит номер версии программы и завершает исполнение:

case 'v':

  cout << program_name << "::"

       << program_version << endl;

  return 0;

Опция -h

запрашивает информацию о синтаксисе запуска и завершает исполнение. Вывод сообщения и выход из программы выполняется функцией usage():

case 'h':

  // break не нужен: usage() вызывает exit()

  usage();

Опция -o

сигнализирует о том, что следующая строка содержит имя выходного файла. Аналогично опция -l

говорит, что за ней указан максимальный размер. Как нам обработать эти ситуации?

Если в строке параметра нет дефиса, возможны три варианта: параметр содержит имя выходного файла, максимальный размер или имя входного файла. Чтобы различать эти случаи, присвоим true




Начало  Назад  Вперед



Книжный магазин