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

Показать сообщение отдельно
DrOffset
7136 / 4277 / 964
Регистрация: 30.01.2014
Сообщений: 7,066
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";
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru