Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 25.09.2009, 09:59   #1
fs444
Форумчанин
 
Регистрация: 18.08.2009
Сообщений: 289
По умолчанию Борьба с крякозябрами в консольном приложении

Пытаюсь бороться с крякозябрами в консольном приложении:
Нашел статью http://www.rsdn.ru/article/qna/ui/concp.xml. В ней описаны несколько способов:
1) Набрать текст программы в редакторе консольного файл-менеджера - это значит билдером сохранить cpp-файл, а затем открыть его редактором файл-менеджера?
3) Смена шрифта. В статье написано про Visual C++. А как изменить шрифт в билдере?
fs444 вне форума
Старый 25.09.2009, 10:22   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Вот только недавно кто-т тут выкладывал пример с установкой кодовой страницы... Эх не запомнил ссылку...
Пройдись по ветке С++ и Помошь студентам - точно было.
I'm learning to live...
Stilet вне форума
Старый 25.09.2009, 12:12   #3
ThisIzGame
Форумчанин
 
Регистрация: 31.08.2009
Сообщений: 161
По умолчанию

чтобы избавиться от
Цитата:
крякозябр
можно делать так
Код:
#include <locale>
...

int main(void)
{
locale rus("rus_rus.866");
wcout.imbue(rus);
...
wcout<<L"русский текст"<<endl;

}
например:
Код:
#include <iostream>
#include <conio.h>
#include <locale.h>
using namespace std;

int main(void)
{
locale rus("rus_rus.866");
wcout.imbue(rus);
wcout<<L"Привет"<<endl;
getch();
return 0;
}
а насчёт шрифта хз

Последний раз редактировалось Stilet; 25.09.2009 в 14:34.
ThisIzGame вне форума
Старый 25.09.2009, 13:57   #4
fs444
Форумчанин
 
Регистрация: 18.08.2009
Сообщений: 289
По умолчанию

Stilet,спасибо, поищу.
fs444 вне форума
Старый 25.09.2009, 15:14   #5
m0nax
Форумчанин
 
Аватар для m0nax
 
Регистрация: 25.09.2009
Сообщений: 534
По умолчанию

пользуюсь
Код:
 setlocale(LC_ALL, "Russian");
достаточно 1 вызвать ее в main и во всей проге можно спокойно пользоваться русским

полный пример
Код:
#include <iostream>
using namespace std;

void main()
{
	setlocale(LC_ALL, "Russian");
	cout << "привет\n" ;
	system("pause");
}
m0nax вне форума
Старый 26.09.2009, 21:05   #6
General.MGN
Новичок
Джуниор
 
Регистрация: 26.09.2009
Сообщений: 2
По умолчанию

http://kpolyakov.narod.ru/school/c/faq.htm#rus
Это решение всех проблем))
сорри за оффтоп...

Последний раз редактировалось General.MGN; 26.09.2009 в 21:08.
General.MGN вне форума
Старый 27.09.2009, 00:13   #7
GonZaleZ
Пользователь
 
Регистрация: 19.06.2009
Сообщений: 57
По умолчанию

делаю так:
Код:
#include <windows.h>

::SetConsoleCP(GetACP);
::SetConsoleOutputCP(GetACP);
одна функция для ввода, другая для вывода.
работает везде

иногда при стандартном шрифте в консоли работает некорректно.
если так, то нужно правой кнопкой мыши кликнуть по верхней полоске в консоли, зайти в свойства и поменять шрифт на другой
GonZaleZ вне форума
Старый 28.09.2009, 10:37   #8
fs444
Форумчанин
 
Регистрация: 18.08.2009
Сообщений: 289
По умолчанию

Код:
#include <iostream>
using namespace std;

void main()
{
	setlocale(LC_ALL, "Russian");
	cout << "привет\n" ;
	system("pause");
}
Все равно лезут крякозябры.

Код:
#include <iostream>
#include <windows.h>
using namespace std;

void main()
{
 ::SetConsoleCP(GetACP);
 ::SetConsoleOutputCP(GetACP);
	setlocale(LC_ALL, "Russian");
	cout << "ïðèâåò\n" ;
	system("pause");
}
Ругается
Цитата:
[C++ Error] Unit1.cpp(7): E2034 Cannot convert 'unsigned int (__stdcall *)()' to 'unsigned int'
[C++ Error] Unit1.cpp(7): E2342 Type mismatch in parameter 'wCodePageID' (wanted 'unsigned int', got 'unsigned int (__stdcall *)()')
[C++ Error] Unit1.cpp(8): E2034 Cannot convert 'unsigned int (__stdcall *)()' to 'unsigned int'
[C++ Error] Unit1.cpp(8): E2342 Type mismatch in parameter 'wCodePageID' (wanted 'unsigned int', got 'unsigned int (__stdcall *)()')
Кстати, что за точки перед этими двумя функциями?
Здесь написано, что надо в настройках компилятора поменять пути к файлам gcc.exe и g++.exe. А где в builder 6 настройки комплятора?
fs444 вне форума
Старый 29.09.2009, 09:06   #9
fs444
Форумчанин
 
Регистрация: 18.08.2009
Сообщений: 289
По умолчанию

Я сделал так:
Код:
#include <stdio.h>
#include <iostream.h>
#include <windows.h>
int main(int args, char* pszArgs[])
{
 system("chcp 1251");
 cout << "Здравствуй, Мир!"
 system("pause");
}
К тому же в свойствах консоли установил шрифт Lucuida Console. Теперь русские буквы выводит прекрасно
fs444 вне форума
Старый 29.09.2009, 13:43   #10
oleg kutkov
Unix C++ developer
Форумчанин
 
Аватар для oleg kutkov
 
Регистрация: 16.04.2007
Сообщений: 651
По умолчанию

Поиск!
В этой ветке вопрос поднимался раз 5!
oleg kutkov вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите, как в консольном приложении заставить программу ждать нажатия клавиши(си)) Александр Елис Помощь студентам 2 19.09.2009 19:38
Цвет текста в консольном приложении Linux a10nan Общие вопросы C/C++ 14 21.08.2009 23:41
Содержимое экрана в полноекранном консольном приложении Роман Радер Win Api 1 29.03.2009 20:04