Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
214 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
1

Как переопределить "operator <<" для cout?

19.07.2013, 11:36. Просмотров 509. Ответов 4
Метки нет (Все метки)

использую RAD 2010 (MVS 2010 стал сильно тормозить и я перешёл). setlocale не помогает, функция
C++
1
2
3
4
5
6
char bufRus[256];
 
char* Rus(const char* text) {
      CharToOem(text, bufRus);
      return bufRus;
      }
тоже не походит так, как нельзя при одном вызове cout использовать несколько операторов << с вызовом функции Rus
C++
1
 cout << rus("йцу") << rus("фыв") << endl;
результат йцуйцу.
Так вот можно ли как нибудь переопределить оператор << cout для переменной типа string , char, char* ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.07.2013, 11:36
Ответы с готовыми решениями:

Вывод строки с cout: IntelliSense: no operator "<<" matches these operands
ошибку выдает 3 IntelliSense: no operator &quot;&lt;&lt;&quot; matches these operands operand types...

Ошибка на "cout <<" no match for operator operand types are std::basic_ostream char
Немного слов про код.Данный код создан для выдачи номера машины,цвета,марки при предоставлении...

Где ошибка невозможно преобразовать указатель "this" из "const pers" в "pers &" при выводе объектов через cout
Добрый день! Переписал код из книг Лафоре, создание мультимножества из собственных объектов-...

"cin","cout" на "printf","scanf"
Вот ещё прога. Мне чисто нужно переделать её на printf,scanf и не используя функцию show, а puts и...

4
Jesus loves me
Эксперт С++
5110 / 3122 / 353
Регистрация: 12.12.2009
Сообщений: 7,899
Записей в блоге: 2
19.07.2013, 11:44 2
Цитата Сообщение от Van111 Посмотреть сообщение
нельзя при одном вызове cout использовать несколько операторов << с вызовом функции Rus
Дело не в этом. Дело в том, что у тебя один буфер и следующий вызов rus() затирает результат предыдущего. А порядок вызовов твоих rus() в данном случае не определен. Меняй логику rus() или используй другие средства для вывода русского языка. Лучше всего, конечно, английский использовать и не париться
1
Don't worry, be happy
16921 / 9797 / 1887
Регистрация: 27.09.2012
Сообщений: 24,295
Записей в блоге: 2
19.07.2013, 11:45 3
Так?
C++
1
2
3
4
std::string Rus(const char* text) {
      CharToOem(text, bufRus);
      return bufRus;
      }
0
Jesus loves me
Эксперт С++
5110 / 3122 / 353
Регистрация: 12.12.2009
Сообщений: 7,899
Записей в блоге: 2
19.07.2013, 11:47 4
Можешь сделать жесткий костыль, обмотанный синей изолентой. Сделать класс Rus, и перегрузить оператор << для него. Конструктор Rus будет принимать const char*, а оператор << будет выводить результат работы CharToOem().
1
214 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
19.07.2013, 11:52  [ТС] 5
Цитата Сообщение от Kastaneda Посмотреть сообщение
Лучше всего, конечно, английский использовать и не париться
делаю, игру в города, поэтому думаю целесообразней сделать её русскоязычной , так как первый кто её будет оценивать - это русскоязычный человек.
Цитата Сообщение от Kastaneda Посмотреть сообщение
Можешь сделать жесткий костыль
интересная идея, спасибо
Цитата Сообщение от Croessmah Посмотреть сообщение
Так?
я имел ввиду для переменной cout

всем спасибо
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.07.2013, 11:52

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Перегрузить операторы operator+() и operator*() в пользовательском классе "Комплексное число"
Здравствуйте. Предлагаю заняться арифметикой. Создал прослейший класс, перегрузил операторы...

Ошибка namespace "std" не содержит члена "cout"
Вот такие ошибки в общем Собственно, вот сам код #pragma once #include &lt;Windows.h&gt;...

почему то не переводит на другую строку cout << "введенный пункт назначения:" << a[i].pn << ' ' ; cout << "введенный пункт назначения:" << a[i].num
struct Train { char pn ; unsigned int num; char time ; }; void Copy (Train &amp;pest, Train...

Для каждой строки найти слова, которые не имеют ни одного из букв: "l", "k", "r", "s" i "j"
Задано символьные строки. Строка состоит из нескольких слов (наборов символов), которые разделяются...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.