Форум: Форум C++Разное
Новые темы: 00
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Русский текст? Перегрузить оператор << !
 
 автор: StaFox   (18.10.2009 в 23:09)   письмо автору
 
 

Хочу решить проблему с отображением русского текста, точнее с его неотображением следующим путём:
Перегрузить оператор <<
Но у меня ничего не выходит. Работаю в VS 2008 (ver. 9.0)
Не могли бы вы написать как сеё должно выглядеть?
Ещё проблема с функцией CharToOem, при подключении windows.h куча варнингов и даже ерроры...

Вот то что я пытался отправить на компиляцию. Прошу не ругать, пытался уже много способов провернуть, чтобы вникнуть. Во всех источниках теоретических, перегрузка рассматривается для объектов, как её там применять я понял (сложить два объекта, перемножить и т.д.). А вот тут... проблема.

ostream operator<<(ostream cout, char *pText) {
#include <Windows.h>
CharToOem(pText, pText);
return cout;
}

  Ответить  
 
 автор: cheops   (22.10.2009 в 15:34)   письмо автору
 
   для: StaFox   (18.10.2009 в 23:09)
 

Погодите, это консоль? А зачем перегружать русский текст, можно просто настроить кодировку консоли в том числе и из программы. Возможно вас заинтересует тема по ссылке http://www.softtime.ru/cpp/read.php?id_forum=1&id_theme=10

  Ответить  
 
 автор: StaFox   (22.10.2009 в 17:06)   письмо автору
 
   для: cheops   (22.10.2009 в 15:34)
 

а если программу нужно будет запустить на другой машине? тоже менять шрифт?
нужно перегрузить....

  Ответить  
 
 автор: cheops   (23.10.2009 в 00:12)   письмо автору
 
   для: StaFox   (22.10.2009 в 17:06)
 

Ну если оператор хочет работать в кодировке cp1251 - да. Например, все пользователи MySQL вынуждены это делать. Вы можете ориентироваться на кодировку cp866, однако, она имеет достаточно ограниченное применение и в современных программах, как правило, не применяется.

  Ответить  
 
 автор: StaFox   (24.10.2009 в 13:07)   письмо автору
 
   для: cheops   (23.10.2009 в 00:12)
 

может я некорреетно поставил вопрос... Мне нужно перегрузить << ; и чтобы присутствовала функция CharToOem(). Т.е. переманная должна пройти через эту функцию.
Когда я работал в MS Visual C++ 6. я написал russian.h

#ifndef _RUSSIAN
#define _RUSSIAN

#include "windows.h"

char tRus[256];
charRus(const char* text) {
CharToOem(text, tRus);
return tRus;
}

#endif


мне по сути нужно тоже самое только при использовании оператора вывода <<

  Ответить  
 
 автор: cheops   (24.10.2009 в 16:24)   письмо автору
 
   для: StaFox   (24.10.2009 в 13:07)
 

Оператор << для какого класса вы хотите перегрузить? Для стандартного ostream? Этот класс уже написан - вы можете перегрузить оператор для своего класса, например, унаследованного от того же ostream. Или же нужно писать свой собственный манипулятор для для ostream.

  Ответить  
 
 автор: WolfLite   (26.10.2009 в 16:15)   письмо автору
 
   для: StaFox   (18.10.2009 в 23:09)
 

В VS 2008 можно испльзовать локализацию в кансоли (и VS2005)
Пример
#include <locale>
...
...
int main()
{
setlocale(LC_ALL,"rus");
....
}
Подробней - читайте справку, там хорошо всё написано

  Ответить  
 
 автор: StaFox   (28.10.2009 в 19:19)   письмо автору
 
   для: WolfLite   (26.10.2009 в 16:15)
 

Спасибо. Попрбую

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования