Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.71
White_Tiger
18 / 18 / 3
Регистрация: 24.10.2010
Сообщений: 76
#1

Обработка параметров командной строки - C++

08.06.2011, 15:50. Просмотров 2841. Ответов 2
Метки нет (Все метки)

Решение должно представлять собой самостоятельное приложение командной строки,
входной файл для которого задается ключом -i <имя файла>, а выходной — ключом -o <имя файла>. Ключи могут располагаться на командной строке в произвольном порядке. Если входной файл не указан, то данные читаются со стандартного потока ввода, соответственно, если не указан выходной файл, данные выдаются на стандартный вывод. Приложение должно корректно обрабатывать ошибки ввода/вывода с выводом соответствующих сообщений.
Пример запуска приложения:
var1.exe -i infile.txt -o outfile.txt
...
Разработайте программу, объединяющую каждый абзац во входном файле в одну строку. Абзацы могут отличаться друг от друга отступом в начале строки или разделяться пустой строкой. В результирующих
строках-абзацах не должно быть лишних пробелов между словами.

Как реализовывать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2011, 15:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Обработка параметров командной строки (C++):

функция main обработка параметров командной строки - C++
Подскажите, пожалуйста, зачем могут использоваться параметры командной строки, пример какой-нибудь если можно, только не конкретный :) без...

Обработка параметров командной строки. Можно ли ещё проще? - C++
Всем доброго дня) Экспериментировал с параметрами командной строки, хочу сделать так, чтобы в зависимости от установленных параметров,...

Чтение параметров из командной строки - C++
есть програма которая считает количество строк. написана на с. через командную строку я её скомпилировал - она работает! подскажите плз...

Не получается считать значение параметров из командной строки - C++
Нужно cоставить программу , которая выводит на экран значение функции F(x) в заданном диапазоне .Диапазон и шаг изменения аргумента...

Передача параметров командной строки в main(): что происходит в коде? - C++
Здравствуйте. Объясните пожалуйста, что идет в main ? ... printf(&quot;IMAGE NAME: %s\n&quot;, filename); ... void A(int h) { //это...

Обработка аргументов командной строки - C++
Не нашел где создать тему, поэтому решил здесь. 1. Интересуют стандарты для аргументов командной строки, то есть как обычно их...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
09.06.2011, 19:33 #2
Вот, параметры командной строки обрабатывает, абзацы в строки объединяет, но
пока без обработки ошибок.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <iostream>
#include <fstream>
#include <string>
 
bool default_in = true;
bool default_out = true;
 
int main(int argc, char *argv[])
{
    std::string 
        input_file_name,
        output_file_name;
 
    size_t i;
    for (i = 1; i < argc; ++i) {
        if ( (!strcmp(argv[i], "-i")) && (i+1 < argc) ) {
            input_file_name = argv[i+1];
            default_in = false;
        }
        if ( (!strcmp(argv[i], "-o")) && (i+1 < argc) ) {
            output_file_name = argv[i+1];
            default_out = false;
        }
    }
 
    std::ifstream fin;
    if (!default_in) {
        fin.open(input_file_name.c_str(), std::ios_base::in);
        if (!fin) {
            std::cerr << "Cannot open file \"" << input_file_name << "\".\n";
            return 1;
        }
    }
    std::ofstream fout;
    if (!default_out) {
        fout.open(output_file_name.c_str(), std::ios_base::out);
        if (!fout) {
            std::cerr << "Cannot open file \"" << output_file_name << "\".\n";
            return 1;
        }
    } 
    //------------------------------------------------------
    std::string buf, string;
 
    while ( std::getline((default_in ? std::cin : fin), buf) ) {
        if (buf[0] == ' ' || buf[0] == '\t' || buf.empty()) {
            (default_out ? std::cout : fout) << string << '\n';
            string.clear();
 
            if (buf[0] == ' ' || buf[0] == '\t') {
                do {
                    buf.erase(0, 1);
                } while (buf[0] == ' ' || buf[0] == '\t');
                if (buf.empty())
                    continue;
            } 
            else
                continue;
        }
        for (size_t offset = buf.length() - 1;
            (!buf.empty())
            && 
            (buf[offset] == ' ' || buf[offset] == '\t');
        --offset) 
        {
            buf.erase(offset, 1);
        }
        string += buf;
        string += ' ';
    }
    (default_out ? std::cout : fout) << string << std::endl;
    return 0;
}
fasked
Эксперт С++
4935 / 2515 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
09.06.2011, 20:01 #3
Цитата Сообщение от White_Tiger Посмотреть сообщение
Как реализовывать?
для C++ есть boost::program_options, для Си есть getopt. К сожалению ни одна из этих библиотек не включена в стандартные. Но getopt гарантированно есть в GNU C Library, следовательно есть в mingw и gcc.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2011, 20:01
Привет! Вот еще темы с ответами:

Работа со строками - обработка аргументов командной строки - C++
Помогите реализовать. Буду очень благодарен. Если первый аргумент командной строки-опция-d, то распечатать введен далее текст без...

Обработка параметров коммандной строки - C++
как обработать несколько параметров для опции? getopt вроде только один берет. Вот что хочу: move_user --user user_name --nodes node44...

Слияних 2 файлов в третий + строки + использование командной строки - C++
Помогите с заданием пожалуйста. Задано 2 файла, строки в которых упорядочены по алфавиту. Написать программу, осуществляющую слияние этих...

Аргументы командной строки - C++
Пытаюсь разобраться с этой штукой. У Дейтела это собственно только дополнение, а не отдельный пункт раздела так что всё написано сжато и с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru