Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,587
Записей в блоге: 12
#1

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

19.07.2013, 11:36. Просмотров 370. Ответов 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* ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.07.2013, 11:36     Как переопределить "operator <<" для cout?
Посмотрите здесь:

Реализация перегрузки "operator +" для двух объектов C++
Как печатать в cout << " РУССКИМИ БУКВАМИ" C++
C++ Чем "operator *=" отличается от "operator *"?
C++ Для чего нужен "operator"?
char *p; p="Help"; cout << p[0]; А как вывести адрес? C++
Как передать "operator<" в функцию? C++
Перегрузка "operator =" для шаблона класса C++
Вывод строки с cout: IntelliSense: no operator "<<" matches these operands C++
C++ Создание перегрузки метода "operator =" для типа, расположенного в ином namespace
C++ Необъявленный идентефикатор cout, или "Как я пытаюсь найти нормальную книгу"
Глобальное переопределение "operator <<" для char * C++
C++ Написать перегрузку operator+() для класса "Массив"

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Форумчанин
Эксперт С++
4468 / 2830 / 224
Регистрация: 12.12.2009
Сообщений: 7,199
Записей в блоге: 1
Завершенные тесты: 1
19.07.2013, 11:44     Как переопределить "operator <<" для cout? #2
Цитата Сообщение от Van111 Посмотреть сообщение
нельзя при одном вызове cout использовать несколько операторов << с вызовом функции Rus
Дело не в этом. Дело в том, что у тебя один буфер и следующий вызов rus() затирает результат предыдущего. А порядок вызовов твоих rus() в данном случае не определен. Меняй логику rus() или используй другие средства для вывода русского языка. Лучше всего, конечно, английский использовать и не париться
Croessmah
Модератор
Эксперт CЭксперт С++
12877 / 7263 / 810
Регистрация: 27.09.2012
Сообщений: 17,943
Записей в блоге: 2
Завершенные тесты: 1
19.07.2013, 11:45     Как переопределить "operator <<" для cout? #3
Так?
C++
1
2
3
4
std::string Rus(const char* text) {
      CharToOem(text, bufRus);
      return bufRus;
      }
Kastaneda
Форумчанин
Эксперт С++
4468 / 2830 / 224
Регистрация: 12.12.2009
Сообщений: 7,199
Записей в блоге: 1
Завершенные тесты: 1
19.07.2013, 11:47     Как переопределить "operator <<" для cout? #4
Можешь сделать жесткий костыль, обмотанный синей изолентой. Сделать класс Rus, и перегрузить оператор << для него. Конструктор Rus будет принимать const char*, а оператор << будет выводить результат работы CharToOem().
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,587
Записей в блоге: 12
19.07.2013, 11:52  [ТС]     Как переопределить "operator <<" для cout? #5
Цитата Сообщение от Kastaneda Посмотреть сообщение
Лучше всего, конечно, английский использовать и не париться
делаю, игру в города, поэтому думаю целесообразней сделать её русскоязычной , так как первый кто её будет оценивать - это русскоязычный человек.
Цитата Сообщение от Kastaneda Посмотреть сообщение
Можешь сделать жесткий костыль
интересная идея, спасибо
Цитата Сообщение от Croessmah Посмотреть сообщение
Так?
я имел ввиду для переменной cout

всем спасибо
Yandex
Объявления
19.07.2013, 11:52     Как переопределить "operator <<" для cout?
Ответ Создать тему
Опции темы

Текущее время: 08:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru