С++ для начинающих


         

не задан ни один входной


                 << "ограничение ресурса\n";

            limit_on = true;

            break;

          default:

            cerr << program_name

                 << " : ошибка : "

                 << "неопознанная опция: - "

                 << pchar << "\n\n";

            // break не нужен: usage() завершает программу

            usage( -1 );

        }

        break;

      }

      default: // либо имя файла

        cout << "default: параметр без дефиса: "

             << pchar << endl;

        if ( ofile_on ) {

          ofile_on = false;

          ofile = pchar;

        }

        else

        if ( limit_on ) {

          limit_on = false;

          limit = atoi( pchar );

          if ( limit < 0 ) {

            cerr << program_name

                 << " : ошибка : "

                 << "отрицательное значение limit.\n\n";

            usage( -2 );

          }

        }

        else file_names.push_back( string( pchar ));

        break;

    }

  }

  if ( file_names.empty() ) {

    cerr << program_name

         << " : ошибка : "

         << " не задан ни один входной файл.\n\n";

    usage( -3 );

  }

  if ( limit != -1 )

    cout << "Заданное пользователем значение limit: "

         << limit << endl;

  if ( ! ofile.empty() )

    cout << "Заданный пользователем выходной файл: "

         << ofile << endl;

  cout << (file_names.size() == 1 ? "Файл, " : "Файлы, ")

       << "подлежащий(е) обработке:\n";

  for ( int inx = 0; inx < file_names.size(); ++inx )

    cout << "\t" << file_names[ inx ] << endl;

}

a.out -d -l 1024 -o test_7_8 chapter7.doc    chapters.doc

Вот трассировка обработки параметров командной строки:

демонстрация обработки параметров в командной строке:

argc: 8

argv[ 1 ]: -d

встретился '-'

встретилась -d: отладочная печать включена

argv[ 2 ]: -l

встретился '-'

встретилась -l: ограничение ресурса

argv[ 3 ]: 1024

default: параметр без дефиса: 1024

argv[ 4 ]: -o

встретился '-'

встретилась -o: выходной файл

argv[ 5 ]: test_7_8

default: параметр без дефиса: test_7_8

argv[ 6 ]: chapter7.doc

default: параметр без дефиса: chapter7.doc

argv[ 7 ]: chapter8.doc

default: параметр без дефиса: chapter8.doc

Заданное пользователем значение limit: 1024

Заданный пользователем выходной файл: test_7_8

Файлы, подлежащий(е) обработке:

        chapter7.doc

        chapter8.doc


Содержание  Назад  Вперед