<< "ограничение ресурса\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