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

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

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

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

08.06.2011, 15:50. Просмотров 2670. Ответов 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++ Параметр командной строки
C++ Чтение параметров из командной строки
функция main обработка параметров командной строки C++
C++ Обработка параметров командной строки. Можно ли ещё проще?
C++ Имитация командной строки
аргементы командной строки C++
Работа со строками - обработка аргументов командной строки C++
C++ Слияних 2 файлов в третий + строки + использование командной строки
Аргументы командной строки C++
C++ Аргументы командной строки
Обработка параметров коммандной строки C++
C++ Не получается считать значение параметров из командной строки

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
Эксперт C++
4932 / 2512 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
09.06.2011, 20:01     Обработка параметров командной строки #3
Цитата Сообщение от White_Tiger Посмотреть сообщение
Как реализовывать?
для C++ есть boost::program_options, для Си есть getopt. К сожалению ни одна из этих библиотек не включена в стандартные. Но getopt гарантированно есть в GNU C Library, следовательно есть в mingw и gcc.
Yandex
Объявления
09.06.2011, 20:01     Обработка параметров командной строки
Ответ Создать тему
Опции темы

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