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

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

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

Показать сообщение отдельно
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 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. Там пишут, что при создании консольного приложения для него создаются соответствующие потоки ввода/вывода. Другими словами выходит, что бы изменить поток вывода в консоль нужно юзать функции апи, а не стандартной библиотеки?
 
Текущее время: 14:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru