|
|
|
| Хочу решить проблему с отображением русского текста, точнее с его неотображением следующим путём:
Перегрузить оператор <<
Но у меня ничего не выходит. Работаю в VS 2008 (ver. 9.0)
Не могли бы вы написать как сеё должно выглядеть?
Ещё проблема с функцией CharToOem, при подключении windows.h куча варнингов и даже ерроры...
Вот то что я пытался отправить на компиляцию. Прошу не ругать, пытался уже много способов провернуть, чтобы вникнуть. Во всех источниках теоретических, перегрузка рассматривается для объектов, как её там применять я понял (сложить два объекта, перемножить и т.д.). А вот тут... проблема.
ostream operator<<(ostream cout, char *pText) {
#include <Windows.h>
CharToOem(pText, pText);
return cout;
} | |
|
|
|
|
|
|
|
для: StaFox
(18.10.2009 в 23:09)
| | Погодите, это консоль? А зачем перегружать русский текст, можно просто настроить кодировку консоли в том числе и из программы. Возможно вас заинтересует тема по ссылке http://www.softtime.ru/cpp/read.php?id_forum=1&id_theme=10 | |
|
|
|
|
|
|
|
для: cheops
(22.10.2009 в 15:34)
| | а если программу нужно будет запустить на другой машине? тоже менять шрифт?
нужно перегрузить.... | |
|
|
|
|
|
|
|
для: StaFox
(22.10.2009 в 17:06)
| | Ну если оператор хочет работать в кодировке cp1251 - да. Например, все пользователи MySQL вынуждены это делать. Вы можете ориентироваться на кодировку cp866, однако, она имеет достаточно ограниченное применение и в современных программах, как правило, не применяется. | |
|
|
|
|
|
|
|
для: cheops
(23.10.2009 в 00:12)
| | может я некорреетно поставил вопрос... Мне нужно перегрузить << ; и чтобы присутствовала функция CharToOem(). Т.е. переманная должна пройти через эту функцию.
Когда я работал в MS Visual C++ 6. я написал russian.h
#ifndef _RUSSIAN
#define _RUSSIAN
#include "windows.h"
char tRus[256];
char* Rus(const char* text) {
CharToOem(text, tRus);
return tRus;
}
#endif |
мне по сути нужно тоже самое только при использовании оператора вывода << | |
|
|
|
|
|
|
|
для: StaFox
(24.10.2009 в 13:07)
| | Оператор << для какого класса вы хотите перегрузить? Для стандартного ostream? Этот класс уже написан - вы можете перегрузить оператор для своего класса, например, унаследованного от того же ostream. Или же нужно писать свой собственный манипулятор для для ostream. | |
|
|
|
|
|
|
|
для: StaFox
(18.10.2009 в 23:09)
| | В VS 2008 можно испльзовать локализацию в кансоли (и VS2005)
Пример
#include <locale>
...
...
int main()
{
setlocale(LC_ALL,"rus");
....
}
Подробней - читайте справку, там хорошо всё написано | |
|
|
|
|
|
|
|
для: WolfLite
(26.10.2009 в 16:15)
| | Спасибо. Попрбую | |
|
|
|