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

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

Восстановить пароль Регистрация
 
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
19.07.2013, 11:36     Как переопределить "operator <<" для cout? #1
использую 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* ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
19.07.2013, 11:44     Как переопределить "operator <<" для cout? #2
Цитата Сообщение от Van111 Посмотреть сообщение
нельзя при одном вызове cout использовать несколько операторов << с вызовом функции Rus
Дело не в этом. Дело в том, что у тебя один буфер и следующий вызов rus() затирает результат предыдущего. А порядок вызовов твоих rus() в данном случае не определен. Меняй логику rus() или используй другие средства для вывода русского языка. Лучше всего, конечно, английский использовать и не париться
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,898
Записей в блоге: 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
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
19.07.2013, 11:47     Как переопределить "operator <<" для cout? #4
Можешь сделать жесткий костыль, обмотанный синей изолентой. Сделать класс Rus, и перегрузить оператор << для него. Конструктор Rus будет принимать const char*, а оператор << будет выводить результат работы CharToOem().
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
19.07.2013, 11:52  [ТС]     Как переопределить "operator <<" для cout? #5
Цитата Сообщение от Kastaneda Посмотреть сообщение
Лучше всего, конечно, английский использовать и не париться
делаю, игру в города, поэтому думаю целесообразней сделать её русскоязычной , так как первый кто её будет оценивать - это русскоязычный человек.
Цитата Сообщение от Kastaneda Посмотреть сообщение
Можешь сделать жесткий костыль
интересная идея, спасибо
Цитата Сообщение от Croessmah Посмотреть сообщение
Так?
я имел ввиду для переменной cout

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

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