Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
6 / 6 / 4
Регистрация: 02.10.2016
Сообщений: 74
1

Перегрузка потокового ввода/вывода для класса с полем типа string

01.03.2017, 22:20. Показов 1156. Ответов 8

Возможно ли перегрузить >> и << или придётся заменить переменную string на массив char?
У меня ошибка появляется: "бинарный "<<": не найден оператор, принимающий правый операнд типа "std::string" (или приемлемое преобразование отсутствует)"
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.03.2017, 22:20
Ответы с готовыми решениями:

Перегрузка потокового ввода/вывода
Вот сама перегрузка ostream&amp; operator&lt;&lt; (ostream&amp; out, Poli&amp; outstream) { out&lt;&lt;&quot;Степень...

Перегрузка потокового ввода-вывода
Доброго времени суток!!! Возникла такая проблема: необходимо сделать перегрузку операций &lt;&lt; и &gt;&gt;....

Перегрузка операторов потокового ввода вывода
Есть класс &quot;деканат&quot;, полем которого есть список студентов, объектов из класса &quot;Студент&quot;. Как...

Перегрузка операторов потокового ввода-вывода
Пожалуйста, ответе на такой вопрос: почему при написании класса, при перегрузке операторов...

8
7158 / 6133 / 2801
Регистрация: 14.04.2014
Сообщений: 26,455
01.03.2017, 22:43 2
Программу покажи.
0
6 / 6 / 4
Регистрация: 02.10.2016
Сообщений: 74
01.03.2017, 22:50  [ТС] 3
nmcf,
C++
1
2
3
4
5
6
7
8
9
10
11
istream& operator >> (istream& is, Box& box)
{
    cout << "Название: ";
    is >> box.name;
    return is;
}
ostream& operator << (ostream& os, Box& box)
{
    os << "Название: " << box.name;
    return os;
}
name - переменная класса типа string.
0
282 / 230 / 114
Регистрация: 07.09.2016
Сообщений: 584
01.03.2017, 23:04 4
да все почти ок у вас. подробнее ошибку сюда копируйте
http://cpp.sh/5wuu
0
nd2
3422 / 2802 / 1252
Регистрация: 29.01.2016
Сообщений: 9,426
01.03.2017, 23:19 5
Цитата Сообщение от Sui Caedere Посмотреть сообщение
"бинарный "<<": не найден оператор, принимающий правый операнд типа "std::string" (или приемлемое преобразование отсутствует)"
C++
1
#include <string>
0
6 / 6 / 4
Регистрация: 02.10.2016
Сообщений: 74
01.03.2017, 23:22  [ТС] 6
nd2, спасибо конечно, но дело не в этом.
0
nd2
3422 / 2802 / 1252
Регистрация: 29.01.2016
Сообщений: 9,426
01.03.2017, 23:51 7
Цитата Сообщение от Sui Caedere Посмотреть сообщение
спасибо конечно, но дело не в этом.
Обычно в этом. Код покажи, чтобы убедиться, что не в этом. Среда какая?
0
nd2
3422 / 2802 / 1252
Регистрация: 29.01.2016
Сообщений: 9,426
01.03.2017, 23:59 8
Вот код и результат компиляции. Как видишь, никаких ошибок нет.
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
#include <iostream>
#include <string>
 
using namespace std;
 
struct Box
{
  string name;
};
 
istream& operator >> (istream& is, Box& box)
{
    cout << "Название: ";
    is >> box.name;
    return is;
}
ostream& operator << (ostream& os, Box& box)
{
    os << "Название: " << box.name;
    return os;
}
 
int main()
{
    setlocale(0, "");
    
    Box obj;
    cin >> obj;
    cout << obj << endl;
    
}
Миниатюры
Перегрузка потокового ввода/вывода для класса с полем типа string  
0
nd2
3422 / 2802 / 1252
Регистрация: 29.01.2016
Сообщений: 9,426
02.03.2017, 00:15 9
Но стоит закоментировать #include <string>, появляется ошибка.
Миниатюры
Перегрузка потокового ввода/вывода для класса с полем типа string  
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.03.2017, 00:15

Перегрузка оператора ввода и вывода внутри класса
Не получается перегрузить операторы ввода и вывода в поток внутри класса, только через...

Перегрузка операций ввода/вывода в шаблоне класса
template &lt;typename T&gt; class Vector { private: T * data; int size; public: Vector(int);...

Исследовать структуру классов потокового ввода/вывода для работы с файлами в языке С++
Здравствуйте нужна помощь в задании по с++. Задание 1. Исследовать структуру классов потокового...

Перегрузка оператора потокового вывода
Вылетает ошибка о том что слишком много параметров функции (строка 54) файл.cpp // // // ...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru