Слабость нашей реализации становится понятной,
Слабость нашей реализации становится понятной, если пользователь небрежно относится к пробелам, разделяющим параметры. Скажем, ни одна из следующих двух строк не будет обработана:
prog - d dataOl
prog -oout_file dataOl
(Оба случая мы оставим для упражнений в конце раздела.)
Вот полный текст нашей программы. (Мы добавили инструкции печати для трассировки выполнения.)
#include <iostream>
#include <string>
#include <vector>
#include <ctype.h>
const char *const program_name = "comline";
const char *const program_version = "version 0.01 (08/07/97)";
inline void usage( int exit_value = 0 )
{
// печатает отформатированное сообщение о порядке вызова
// и завершает программу с кодом exit_value ...
cerr << "порядок вызова:\n"
<< program_name << " "
<< "[-d] [-h] [-v] \n\t"
<< "[-o output_file] [-l limit] \n\t"
<< "file_name\n\t[file_name [file_name [ ... ]]]\n\n"
<< "где [] указывает на необязательность опции:\n\n\t"
<< "-h: справка.\n\t\t"
<< "печать этого сообщения и выход\n\n\t"
<< "-v: версия.\n\t\t"
<< "печать информации о версии программы и выход\n\n\t"
<< "-d: отладка.\n\t\t включает отладочную печать\n\n\t"
<< "-l limit\n\t\t"
<< "limit должен быть неотрицательным целым числом\n\n\t"
<< "-o ofile\n\t\t"
<< "файл, в который выводится результат\n\t\t"
<< "по умолчанию результат записывается на стандартный вывод\n\n"
<< "file_name\n\t\t"
<< "имя подлежащего обработке файла\n\t\t"
<< "должно быть задано хотя бы одно имя --\n\t\t"
Содержание Назад Вперед