Форум программистов, компьютерный форум 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++ Шифрование строки модифицированным шифром Цезаря помогите пожалуйста написать программу, реализующую шифрования вводимой строки модифицированным шифром Цезаря.. подробнее

Показать сообщение отдельно
VVildVVolf
82 / 1 / 0
Регистрация: 08.10.2012
Сообщений: 54
20.07.2015, 16:01  [ТС]     Наследование от 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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
//.h
namespace FilteringOutput{
 
    class FilteringStreamBuf : public std::streambuf{
    public:
        FilteringStreamBuf(ostream& os);
        void ForceWrite(const char* str);
        virtual ~FilteringStreamBuf();
    protected:
        virtual int sync();
        virtual int_type overflow(int_type __c = traits_type::eof());
 
        virtual void Put(const char c);
    private:
        bool LastSymbolIsSeparator;
        bool IsSeparator(const char c)const;
        void ToOutput(const char* str);
        ostream& output;
        string buffer;
 
        static const int MAX_LINE = 80;
    };
 
};
 
//.cpp
FilteringStreamBuf::FilteringStreamBuf(ostream& os):output(os),LastSymbolIsSeparator(false){
    //DEBUG
    output<<"DEBUG 1";
    //DEBUG
}
 
FilteringStreamBuf::~FilteringStreamBuf(){
    sync();
}
 
 
FilteringStreamBuf::int_type FilteringStreamBuf::overflow(int_type __c)
{
    auto c =  traits_type::to_char_type(__c);
 
    if (IsSeparator(c)){
        if (!LastSymbolIsSeparator){
            Put(' ');
        }
    }else{
        Put(c);
    }
 
    return traits_type::not_eof(__c);
}
 
int FilteringStreamBuf::sync(void)
{
    //DEBUG
    output<<"DEBUG 2";
    //DEBUG
 
    ToOutput(buffer.c_str());
 
    buffer.clear();
    return 0;
}
второй дебаг никогда не выводится, несмотря на то, что выполнение доходит до него (в отладчике)
 
Текущее время: 22:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru