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

Наследование ostream - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как вывести в фаил rdbuff() ? http://www.cyberforum.ru/cpp-beginners/thread621900.html
// po;jkyhgfd.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" // asdvcx.cpp: главный файл проекта. #include <iostream> #include <boost/asio.hpp> #include <conio.h>
C++ Классы. Implement the two functions of the class. Ребята, суть такая вообщем, я проходил когда-то C++, но классы я не затрагивал, помогите с заданием, мне лишь бы разоьраться в этом было бы неплохо. C++ Template: class MyClass { public: getNiCount(...) { } replaceNiWithNI(...) http://www.cyberforum.ru/cpp-beginners/thread621888.html
Ссылка на структуру C++
Рассматривал пример из книги Праты. Раздел про ссылки на структуры. В книжке был приведён пример, код примера можно увидеть ниже. У меня возник вопрос для чего нужен этот значек в прототипе и определении функции (выделен красным) const sysop & use (sysop & sysopref); Далее в книге этого не было разъяснено. Я убрал этот значек из прототипа и определения: результат работы программы остался тем же....
Определить средний балл по университету C++
ребята,помогите пожалуйста с выполнением заданий.совсем недавно пришел с армии(8 дней),на покупку денег нету:(может тут кто откликнется с помощью?! 2.тема : ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ СТРУКТУР,задание:Ведомость абитуриентов, сдавших вступительные экзамены в универ-ситет, содержит ФИО абитуриента и его оценки. Определить средний балл по университету и вывести список абитуриентов, средний...
C++ Вывести на экран таблицу значений функции y(x) http://www.cyberforum.ru/cpp-beginners/thread621848.html
ребята,помогите пожалуйста с выполнением заданий.совсем недавно пришел с армии(8 дней),на покупку денег нету:(может тут кто откликнется с помощью?! вот задания сами. 3.тема :ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ ФУНКЦИЙ задание :Вывести на экран таблицу значений функции y(x) для x, изменяющегося от a = 0,1 до b = 1,2 с шагом h = 0,1 (см. лабораторную работу №3, табл. 3.1). Вычисление y(x) оформить...
C++ Файлы и массивы структур: поиск, сортировка ребята,помогите пожалуйста с выполнением заданий.совсем недавно пришел с армии(8 дней),на покупку денег нету:(может тут кто откликнется с помощью?! вот задания сами. 4.тема ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ ФАЙЛОВ задание :На АТС информация о разговорах содержит номер телефона абонента, время разговора и тариф. Вывести для заданного абонента сумму оплаты за раз-говоры. 5.тема СОРТИРОВКА ПО... подробнее

Показать сообщение отдельно
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.07.2012, 22:00     Наследование ostream
Вот этот код работает в том смысле, что объект класса Rostream выводит на консоль с помощью << строки и int.
код
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
#include <iostream>
#include <fstream>
#include <Windows.h>
using namespace std;
 
class Rostream : public ostream
{
        filebuf fb;
        
        public:
        Rostream(filebuf fb) : ostream(&fb)
        {
        
        }
                
        Rostream& operator<<(const char *chbuff)
        {
              char chbuff2[2] = "q";
              string alphabet = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
                        
              for(int i=0; i<strlen(chbuff); ++i)
              {
                  if(alphabet.find(chbuff[i]) < 0)
                  {
                      // если не русский язык, то просто вывести
                      cout << chbuff[i];
                      continue;
                  }
                  chbuff2[0] = chbuff[i];
                  CharToOem(chbuff2, chbuff2);
                  cout << chbuff2;
               }
               return *this;
         }
 
         Rostream& operator<<(const int val)
         {
              cout << val;
              return *this;
         }
 
};
 
int main()
{
  filebuf fb;
  Rostream newcout(fb);
  
  newcout << 12;
  newcout << "ФФФФФФФФФ";
  
  system("pause");
  return 0;
}


Добавлено через 7 минут
Цитата Сообщение от Ksan Посмотреть сообщение
alsav22, русский язык выводит корректно
Идею понял. Этот код русские буквы выводит нормально. Достаточно #include <Windows.h> и #include <fstream> (это для конструктора базового класса). Чтобы другие типы данных выводились объектами Rostream, нужно и для них перегрузить << , так же как для int.
 
Текущее время: 12:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru