Форум программистов, компьютерный форум, киберфорум
Наши страницы

Как создать свой поток и связать его с консолью - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Определить количество студентов, у которых средний балл превышает заданное пользователем значени http://www.cyberforum.ru/cpp-beginners/thread1113324.html
Во всех задачах записи (не менее 5) вводятся с клавиатуры, записываются в файл и выводятся на экран. Затем пользователь вводит параметры запроса и получает ответ на него. Составить программу,...
C++ Написать программу, удаляющую символы пробела в файле Написать пррограмму на С++, где Символьный файл содержит пробелы. Сжать этот файл (убрать пробелы). http://www.cyberforum.ru/cpp-beginners/thread1113322.html
C++ Написать программу, проверяющую, является ли частью данного слова слово 'сок'
Помогите поалуйста с задачами: 1)Написать программу, проверяющую, является ли частью данного слова слово 'сок'. Ответ должен быть 'да' или 'нет'. 2)Файл содержит буквы латинского алфавита....
Шифрование методом простой табличной перестановки C++
Здравствуйте! Хочу попросить о помощи, не могу написать программу шифрования и дешифрования перестановки строк или столбцов. Нужно зашифровать - Приезжаю шестого. Получается шифровка АЗЮЖЕ...
C++ строки.В заданный непустой текст входят только цифры. Определить: http://www.cyberforum.ru/cpp-beginners/thread1113289.html
Текст является восьмеричной записью числа, кратного 5. как написать поиск цифры 8? и определение того, оканчивается ли число на 0 или 5.
C++ Строку чисел в массив integer Подскажите, пожалуйста, срочно нужно, у меня есть строка, которая состоит из цифр. Как по цифрам перевести её в массив целых чисел? Добавлено через 2 минуты если в кратце,то вот: ... подробнее

Показать сообщение отдельно
Ilot
Модератор
Эксперт С++
1823 / 1181 / 232
Регистрация: 16.05.2013
Сообщений: 3,118
Записей в блоге: 5
Завершенные тесты: 1
11.03.2014, 14:49  [ТС]
Цитата Сообщение от DrOffset Посмотреть сообщение
Ilot, я ж говорю, наследуйся от basic_streambuf (если хочешь собственный Traits, то streambuf от stdcout не подойдет, т.к. привязан к его Traits).
Я знаю что cout не подойдет, поэтому и создал тему. Однако если файловый поток создать это как два пальца:
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <string.h>
#include <fstream>
struct MyChar: public std::char_traits<char> {
    static bool
    eq(const char_type& __c1, const char_type& __c2)
    { return toupper(__c1) == toupper(__c2); }
 
    static bool
    lt(const char_type& __c1, const char_type& __c2)
    { return toupper(__c1) < toupper(__c2); }
    static int
    compare(const char_type* __s1, const char_type* __s2, size_t __n)
    { return memicmp(__s1, __s2, __n); }
};
//std::basic_ostream<char, MyChar> mcout;
typedef std::basic_string<char, MyChar> ci_string;
int main()
{
    std::basic_ofstream<char, MyChar> mfout;
    mfout.open("C:\\rt.txt");
    ci_string str1("Masha");
    mfout << str1;
    return 0;
}

,то с созданием потока завязанного на консоль возникают определенные трудности. Понятно, что нужно создавать поток и передавать ему указатель на потоковый буфер, но вот так
C++
1
std::streambuf * buf = std::cout.rdbuf();
это сделать нельзя так как у меня должен быть буфер типа:
basic_streambuf<char, MyChar>
Интересно, а где создается объект cout? В заголовочниках нашел только:
C++
1
  extern ostream cout;
и ни одного намека на то где искать определение самого объекта.
Почитал немного о системном программировании в Win. Там пишут, что при создании консольного приложения для него создаются соответствующие потоки ввода/вывода. Другими словами выходит, что бы изменить поток вывода в консоль нужно юзать функции апи, а не стандартной библиотеки?
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.