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

Наследование от ofstream и перегрузка << - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Написать имитацию кассового аппарата для магазина http://www.cyberforum.ru/cpp-beginners/thread1498687.html
Здравствуйте, У меня задача написать имитацию кассового аппарата для магазина, я сделала, но к сожалению, никак не могу привести его в порядок с остатками, что нужно сделать, чтоб если остаток товара на складе был 0, чтоб не разрешало вводить количество, а то у меня вводиться и + еще и считает (, Спасибо, #include<iostream> #include<string> using namespace std; void main() {...
C++ Как соединить три строки char в одну? Должно было получиться к примеру Документ 1.txt был открыт.Не вышло. char* String1="Документ "; char* String2=OpenDialog1->FileName; char* String3=" был открыт"; char* ResultString=String1+String2+String3; Так не работает,а StrCat соединяет только две http://www.cyberforum.ru/cpp-beginners/thread1498661.html
C++ Игра крестики-нолик
Пишу игру крестики-нолики с хоть каким-то ИИ. Есть функция bot_attack и функция bot_def bool Game::bot_attack() { this->botAttack=false; //gor if((player_field==player_field) && (player_field==0)) { if(player_field==2) { return true;
Как написать программу-собеседника C++
Мне хотелось бы, чтобы кто-нибудь объяснил мне, как написать себе собеседника.
C++ Нахождение плотности вещества http://www.cyberforum.ru/cpp-beginners/thread1498635.html
Как должна выглядить структура, в который хранятся , например, название и плотности газов, чтобы при вводе в консоли имени газа, показывалась его плотность.Напишите шаблон, пожалуйста.Язык C++.
C++ Шифрование строки модифицированным шифром Цезаря помогите пожалуйста написать программу, реализующую шифрования вводимой строки модифицированным шифром Цезаря.. подробнее

Показать сообщение отдельно
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
14.07.2015, 16:54     Наследование от ofstream и перегрузка <<
Очень простой пример фильтрации.
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
#include <iostream>
#include <functional>
#include <algorithm>
 
class formatting_ostream
{
public:
   typedef std::function<std::string(const std::string&)> filter_t;
   formatting_ostream(std::ostream& stream, const filter_t& filter) : stream_(stream), filter_(filter)
   {
   }
   formatting_ostream& operator << (const std::string& value)
   {
      const std::string filtered = filter_(value);
      stream_ << filtered << std::endl;
      return *this;
   }
private:
   std::ostream& stream_;
   filter_t filter_;
};
 
class source
{
public:
   source(formatting_ostream& stream) : stream_(stream)
   {
   }
   void print()
   {
      stream_ << "HeLLo";
   }
private:
   formatting_ostream& stream_;
};
 
int main()
{
   auto to_lower = [](const std::string& v) -> std::string
   {
      std::string result;
      std::transform(v.begin(), v.end(), std::back_inserter(result), tolower);
      return result;
   };
   formatting_ostream stream(std::cout, to_lower);
   source s(stream);
   s.print();
}
Конечно, если source должен конструироваться именно от ostream это будет значительно сложнее.

Добавлено через 5 минут
По поводу того как правильно должен быть реализован formatting_ostream можно посмотреть на boost/log.
 
Текущее время: 16:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru