Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
2 / 2 / 2
Регистрация: 26.03.2016
Сообщений: 50
1

Создание манипулятора с аргументами для потоков ввода вывода

26.10.2019, 16:51. Показов 563. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача в том чтобы создать манипулятор который ограничивал строку на заданное число символов, а для всех остальных типов хотелось бы чтобы поток функционировал как обычно.
В классе манипулятора написал ф-ию приведения типа , чтобы он выдавал поток , если пользователь пытается запихнуть в поток что то кроме строки.
Ошибка в ф-ии приведения типа:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\xlocale(319): warning C4530: Использован обработчик исключений C++, но семантика уничтожения объектов не включена. Задайте параметр /EHsc
q5.cpp(14): error C2280: "std::basic_ostream<char,std::char_traits<char>>::basic_ostream(const std::basic_ostream<char,std::char_traits<char>> &)": предпринята попытка ссылки на удаленную функцию
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\ostream(83): note: см. объявление "std::basic_ostream<char,std::char_traits<char>>::basic_ostream"
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include\ostream(83): note: "std::basic_ostream<char,std::char_traits<char>>::basic_ostream(const std::basic_ostream<char,std::char_traits<char>> &)": функция явно удалена

Объясните пожалуйста как это работает.
Вот код:
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
#include <sstream>
#include <iostream>
#include <iomanip>
#define mac(EXPR) cout << (EXPR) << endl;
using namespace std;
class UserSetW {
    unsigned int w;
    ostream * oStream;
public:
    UserSetW(int w) : w(w)  {
        oStream = NULL;
    }
    operator ostream() {
        return *oStream;
    }
    friend istream& operator>>(istream &  stream,  UserSetW & U) {
        return (stream >> setw(U.w));
    }
    friend UserSetW& operator<<(ostream & stream,  UserSetW & U) {
        U.oStream = &stream;
        return U;
    }
    friend ostream& operator<<(UserSetW & U, string s) {
        unsigned int k = U.w;
        if(s.size() >  k) s.erase(k);
        return (*(U.oStream) << s);
    }
};
int main() {
    istringstream ss("SoAlotofText");
    ostringstream oss;
    string temp;
    ss.fill('%');
    cout.fill('%');
    ss >> UserSetW(2) >> temp;
    mac(temp);
    temp = "";
    ss.fill('%');
    ss >> UserSetW(80) >> temp;
    mac(temp);
    ostream  *ost = &oss;
    cout  << UserSetW(5) << string("HelloMyFriends!") <<  " Something"  << endl;
    (*ost) << "SOmething" << endl;
    mac(oss.str());
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.10.2019, 16:51
Ответы с готовыми решениями:

GoogleTest. Тестирование потоков ввода/вывода для собственных классов
Доброго времени суток, форумчане! У меня есть класс, для которого я написал перегрузку оператора...

Перехват потоков ввода/вывода
Уже 2 дня бьюсь над проблемой: на основе примера...

Закрытие потоков ввода/вывода
Почему закрытие потоков ввода/вывода в блоке finally считается плохой практикой ?

Связывание потоков ввода-вывода
cin.tie(&amp;cout); cout&lt;&lt;&quot;Enter x: &quot;; cin&gt;&gt;x; для чего применяется связывание? а то чтот не...

0
26.10.2019, 16:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.10.2019, 16:51
Помогаю со студенческими работами здесь

Перехват потоков ввода/вывода
Проблема в следующем: Имеется консольное приложение, например такое: //1.exe #include &lt;iostream&gt;...

Создание окна для ввода и вывода информации
Приветствую! Кто-нибудь сталкивался с задачей создания окон в powershell и вывода инфы командлетов...

Перехват стандартных потоков ввода-вывода
Здравствуйте. Проблема вот в чем: Имеется файл code.exe, который ожидает ввода двух чисел и...

Перевод стандартных потоков ввода/вывода в файлы
Интересует сея возможность.. Знаю про freopen с С файлами, но вот интересна такая возможность в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru