Форум программистов, компьютерный форум 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"; подробнее

Показать сообщение отдельно
DrOffset
6787 / 3998 / 917
Регистрация: 30.01.2014
Сообщений: 6,819
14.04.2014, 19:51     Как создать свой поток и связать его с консолью
Ilot,
Ну вот как-то так может выглядеть реализация:
Кликните здесь для просмотра всего текста
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#include <streambuf>
#include <limits>
#include <cstdio>
 
class console_buffer
    : public std::basic_streambuf< char, std::char_traits<char> >
{
public:
    explicit console_buffer(FILE * file)
        : file_(file)
    {}
 
    ~console_buffer()
    {
        std::fflush(file_);
    }
 
protected:
    std::basic_streambuf<char, std::char_traits<char> > * setbuf(char * s, std::streamsize n)
    {
        size_t n_size_t = sizeof(std::streamsize) > sizeof(size_t)
                          ? static_cast<size_t>(
                                std::min(
                                    static_cast<std::streamsize>(std::numeric_limits<size_t>::max())
                                  , n
                                )
                            )
                          : static_cast<size_t>(n);
        std::setvbuf(file_, s, s == 0 && n == 0 ? _IONBF : _IOFBF, n_size_t);
        return this;
    }
 
    pos_type seekoff(off_type off
                     , std::ios_base::seekdir dir
                     , std::ios_base::openmode = std::ios_base::in | std::ios_base::out)
    {
        int whence;
        switch(dir)
        {
        case std::ios_base::beg:
            whence = SEEK_SET;
            break;
        case std::ios_base::cur:
            whence = SEEK_CUR;
            break;
        case std::ios_base::end:
            whence = SEEK_END;
            break;
        default:
            return pos_type(-1);
        }
        if(off <= std::numeric_limits<off_type>::max() && std::fseek(file_, off, whence) == 0)
        {
            std::fpos_t pos;
            std::fgetpos(file_, &pos);
            return pos_type(pos);
        }
        return pos_type(-1);
    }
 
    pos_type seekpos(pos_type pos
                     , std::ios_base::openmode = std::ios_base::in | std::ios_base::out)
    {
        std::fpos_t p(pos);
        return std::fsetpos(file_, &p) == 0 ? pos : pos_type(-1);
    }
 
    int sync()
    {
        return std::fflush(file_) == 0 ? 0 : -1;
    }
 
    std::streamsize showmanyc()
    {
        return -1;
    }
 
    int_type overflow(int_type c = traits_type::eof())
    {
        if(c == traits_type::eof())
        {
            std::ptrdiff_t unwritten = this->pptr() - this->pbase();
            if(unwritten != 0)
            {
                std::fflush(file_);
                if(this->pptr() - this->pbase() < unwritten)
                {
                    return traits_type::not_eof(c);
                }
                return traits_type::eof();
            }
            return traits_type::not_eof(c);
        }
        else
        {
            int result = putc(c, file_);
            return result != EOF ? result : traits_type::eof();
        }
    }
 
private:
    FILE * file_;
};
 
#include <ostream>
 
int main()
{
    console_buffer conBuf(stdout);
    std::basic_ostream<char, std::char_traits<char> > conOut(&conBuf);
 
    conOut << "TeSt";
}
 
Текущее время: 21:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru