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

Вывести на экран содержимое файла с программой на С - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Помогите найти ошибку http://www.cyberforum.ru/cpp-beginners/thread376180.html
Сегодня начал изучать c++ и не могу найти ошибку вот задача //--------------------------------------------------------------------------- #include <vcl.h> #include <iostream.h>
C++ классы и сущность Написать программу с конструкторами и диструкторами, сущность мотоциклы... Кто знает как подскажите? есть какой нибудь пример похожий скиньте если не трудно http://www.cyberforum.ru/cpp-beginners/thread376179.html
C++ Последовательность
Помогите разобраться, исправить код. не понимаю в чем дело 272. Максимальная красивая подпоследовательность ограничение времени на тест: 0.5 сек. ограничение памяти на тест: 65536 KB. ввод: standard вывод: standard Дана последовательность N целых чисел A, A, ..., A. Подпоследовательность называется красивой, если любые два ее элемента имеют разность индексов в первоначальной...
Выведите все содержимое параметров операционной системы C++
Выведите все содержимое параметров операционной системы, переданных main()
C++ Задача с односвязным и двухсвязным списком (сортировка). http://www.cyberforum.ru/cpp-beginners/thread376165.html
Условие: Структура содержит название издания, газета или журнал, цена экземпляра. Добавлять новые издания так, чтобы названия были упорядочены по алфавиту. Выполнить в двух вариантах, с односвязным и двухсвязным. Help! Добавлено через 5 часов 3 минуты up. Заранее спасибо
C++ заменить каждую точку многоточием Здравствуйте, помогите решить задачу с массивами и строками. Тема:массивы и строки. "В предложении заменить каждую точку многоточием." подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
 Аватар для Nameless One
5759 / 3408 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
01.11.2011, 20:01     Вывести на экран содержимое файла с программой на С
В Unix-терминалах существует возможность подсвечивать вывод программ с помощью управляющих escape-последовательностей.
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#include <iostream>
#include <string>
#include <boost/regex.hpp>
#include <sstream>
#include <fstream>
 
template <class T>
std::string to_string(const T& v)
{
    std::ostringstream oss;
    oss << v;
    return oss.str();
}
 
enum font_type
{
    PLAIN = 0,
    BOLD = 1,
    UNDERLINED = 4,
    BLINK = 5
};
 
enum color
{
    RESET = 0,
    BLACK = 30,
    RED = 31,
    GREEN = 32,
    YELLOW = 33,
    BLUE = 34,
    PINK = 35,
    TURQUOISE = 36,
    WHITE = 37
};
    
class font
{
public:
    font();
    font(font_type, color, color);
    font(const font&);
    
    std::string to_str() const;
    
private:
    font_type f_t;
    color fg, bg;
};
 
font::font()
    : f_t(PLAIN), fg(RESET), bg(RESET)
{
}
 
font::font(font_type t, color f, color b)
    : f_t(t), fg(f), bg(b)
{
}
 
font::font(const font& rhs)
    : f_t(rhs.f_t), fg(rhs.fg), bg(rhs.bg)
{
}
 
std::string font::to_str() const
{
    std::string result("\e[");
    result += to_string(f_t);
    if(fg != RESET && bg != RESET)
    result += std::string(";") + to_string(fg) + std::string(";") +
        to_string(bg + 10);
 
    result += std::string("m");
    
    return result;
}
 
class colorizer
{
public:
    colorizer(const font&, const font&);
    std::string colorize(const std::string&) const;
private:
    font begin, end;
};
 
colorizer::colorizer(const font& b, const font& e)
    : begin(b), end(e)
{
}
 
std::string colorizer::colorize(const std::string& str) const
{
    return begin.to_str() + str + end.to_str();
}
 
int main(int argc, char* argv[])
{
    std::ifstream ifs;
 
    try
    {
    if(argc != 2)
        throw std::runtime_error("Usage: colorize FILE");
    
    
    const font reset;
    const font red(PLAIN, RED, WHITE);
    const colorizer real_c(red, reset);
 
    const boost::regex rx(R"del(((\+|-)?\d+(\.\d*)?((e|E)(\+|-)?\d+)?))del");
        
    ifs.open(argv[1]);
 
    if(!ifs)
        throw std::runtime_error("Can't open file " + std::string(argv[1]));
        
    std::string line;
 
    while(std::getline(ifs, line))
    {
        std::string result = boost::regex_replace(line, rx, real_c.colorize("$&"),
                              boost::format_perl);
        std::cout << result << std::endl;
    }
 
    ifs.close();
    }
 
    catch(const std::exception& e)
    {
    std::cerr << e.what() << std::endl;
    
    return 1;
    }
    
    return 0;
}
Скрин:
Вывести на экран содержимое файла с программой на С
Естественно, для успешного запуска нужны Unix-like система и Boost
 
Текущее время: 07:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru