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

Форум C++

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

 

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

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

тема: Русский шрифт в cmd.exe
 
 автор: SnooPI   (28.03.2007 в 12:18)   письмо автору
 
 

Не получается сделать.....
Поиск юзал, пробовал ваш способ сменить шрифт на Lucida Console.......Эффект такой же :9
Не знаю что делать

  Ответить  
 
 автор: cheops   (28.03.2007 в 13:37)   письмо автору
 
   для: SnooPI   (28.03.2007 в 12:18)
 

Вы меняете кодировку в самой программе?
system("chcp 1251");

  Ответить  
 
 автор: SnooPI   (28.03.2007 в 13:42)   письмо автору
 
   для: cheops   (28.03.2007 в 13:37)
 

В программе ничего не делаю......ну вот допустим

#include <iostream>
using namespace std;

int main()
{
int chislo;
cout << "Введите число";
cin >> chislo;
cout << "Вы ввели число\n" << chislo;
return 0;
}

То в каком месте этого кода мне поставить кодировку?:)

  Ответить  
 
 автор: cheops   (28.03.2007 в 15:52)   письмо автору
 
   для: SnooPI   (28.03.2007 в 13:42)
 

Попробуйте следующим образом
#include <cstdlib>
#include <iostream>
using namespace std;

int main()
{
  int chislo;
  system("chcp 1251");
  cout << "Введите число";
  cin >> chislo;
  cout << "Вы ввели число\n" << chislo;
  return 0;
}

  Ответить  
 
 автор: Саня   (28.03.2007 в 13:47)   письмо автору
 
   для: SnooPI   (28.03.2007 в 12:18)
 

Можно настроить саму консоль: http://softtime.ru/cpp/read.php?id_forum=1&id_theme=10

  Ответить  
 
 автор: SnooPI   (28.03.2007 в 13:51)   письмо автору
 
   для: Саня   (28.03.2007 в 13:47)
 

Все спасибо, просто в cmd прописал строку "chcp 1251" =)

  Ответить  
 
 автор: XPyCT   (30.03.2007 в 10:05)   письмо автору
 
   для: SnooPI   (28.03.2007 в 13:51)
 

я даже не знал что можно так кодировку подключить!!!
С этой проблемой можно справится вот так:
создать заголовочный файл <rusout.h>
вот код:

//----------------------------------------------
//rusout.h--------------------------

#ifndef RUSOUT_H

#define RUSOUT_H

#include<windows.h>

#include<iostream>

#include<stdio.h>

using namespace std;

ostream& operator<< ( ostream& out, const char* str){
char*temp = new char[strlen(str)+1];

if(CharToOemA ( str, temp)){

printf("%s" , temp);
}
return out;
}
#endif

теперь за место <iostream> используй <rusout.h > или <rusout >

этот код сохрани с раширением rusout.h и добавь в папку инклуд, или какая там у те? Думаю всё

этот пример написан не мной но работает классно MS Visual C++ 6.0

  Ответить  
 
 автор: oleg_alexeev   (30.03.2007 в 11:13)   письмо автору
 
   для: XPyCT   (30.03.2007 в 10:05)
 

Я тут вижу две ошибки. Перед использованием этого кода лучше бы их исправить :-)

  Ответить  
 
 автор: XPyCT   (30.03.2007 в 19:00)   письмо автору
 
   для: oleg_alexeev   (30.03.2007 в 11:13)
 

я этот код не писал !!!
Я им пользуюсь в MS V C++ 6.0
я новичок в этом деле
только прошол курс С++ но понту мало курс это не институт вот и шагаю с гордо поднятой головой по форумам! А где ошибка то? - если можно

и еще вопрос - если можно

к примеру я хочу поговорить с компом своим
для этого пишу следующий код
//Болталка
#include <iostream.h>
void main ()
{
char slovo;
cout<<"привет юзер как дела? "<<endl;
cin>>slovo;
if (slovo=='ok')cout<<"значит хорошо";
if (slovo=='плохо')cout<<"Почему ?";
cin.get ();
}
переменная char для одного символа заключенного в одинарные кавычки!!!!
СООТВЕТСТВЕННО это не годится , как это реализовать?
за ранее спасибо

  Ответить  
 
 автор: Саня   (30.03.2007 в 19:49)   письмо автору
 
   для: XPyCT   (30.03.2007 в 19:00)
 

Товарищи, не разводите оффтоп! Заведите новую тему!

  Ответить  
 
 автор: oleg_alexeev   (31.03.2007 в 17:11)   письмо автору
 
   для: XPyCT   (30.03.2007 в 19:00)
 

Главная ошибка в том, что память, выделенная под временную строку, не освобождается при выходе из функции. Это так называемая утечка ресурсов. Другая ошибка в том, что вывод делается с помощью printf(). Эта функция выводит строку в стандартный поток вывода, так что это решение работает правильно только когда потоком для вывода является std::cout, а не произвольный поток.

Для других вопросов действительно лучше создавать новые темы, но отвечу по-быстрому тут. Надо объявить slovo как переменную типа std::string.

  Ответить  
 
 автор: XPyCT   (02.04.2007 в 10:01)   письмо автору
 
   для: oleg_alexeev   (31.03.2007 в 17:11)
 

большое спасибо от всей души!!!!
Но дело в том что в моем долбаном висуал С++ 6.0 это все не работаеет!!!
я скачал DEV C++ - и попробовал сделать руссификацию по указанному выше примеру

#include <cstdlib>
#include <iostream>
using namespace std;

int main()
{
int chislo;
system("chcp 1251");
cout << "Введите число";
cin >> chislo;
cout << "Вы ввели число\n" << chislo;
return 0;
}

все равно выдаеет иероглефы и мой русоут тоже не работаеет вот такая петрушка!!!
и хз как с этим боротся, скиньте плиз пример или заголовочный файл для dev C++ для винды
____________________________________________
наверно в мои 40 лет уже поздно изучать С++ :) - не судите строго

  Ответить  
 
 автор: oleg_alexeev   (02.04.2007 в 11:52)   письмо автору
682 байт
 
   для: XPyCT   (02.04.2007 в 10:01)
 

А что у вас выдает система при вводе с консоли chcp без параметров?
Что выдает при вводе chcp 1251?

Есть ещё способ выводить русские сообщения правильно - это набрать их в тексте программы сразу в нужной кодировке. Сделать это можно так - кодировка консоли у меня 866, открываю свой исходник в Far-е и выставляю досовскую кодировку (866), набираю русские сообщения и компилирую - всё отображается нормально без переключений. Пример прилагается.

  Ответить  
 
 автор: XPyCT   (02.04.2007 в 14:23)   письмо автору
 
   для: oleg_alexeev   (02.04.2007 в 11:52)
 

система пишет что все правильно сделано без ошибок eror -0 warning-0

  Ответить  
 
 автор: cheops   (02.04.2007 в 13:10)   письмо автору
 
   для: XPyCT   (02.04.2007 в 10:01)
 

Там хитрость имеется - залезьте в свойства консольного окна и измените шрифт с точечного на Lucida Console - точечные шрифты не поддерживают cp1251.

  Ответить  
 
 автор: XPyCT   (02.04.2007 в 14:21)   письмо автору
 
   для: cheops   (02.04.2007 в 13:10)
 

fhx за совет в среду прейдет учитель с ним вмемте попробуем
с ув XPyCT

  Ответить  
 
 автор: XPyCT   (02.04.2007 в 15:02)   письмо автору
 
   для: cheops   (02.04.2007 в 13:10)
 

все норм спасибо!!!
вопрос теперь он уведомляеет меня о том что на что используется кодировка 1251
вот результат исполнения кода
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Текущая кодовая страница: 1251
Введите число
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
да и еще чтоб программа не исчезала мгновенно я в висуал С++ 6.0
использовал - cin.get (); - В dev C++ это не работаеет

  Ответить  
 
 автор: cheops   (02.04.2007 в 15:17)   письмо автору
 
   для: XPyCT   (02.04.2007 в 15:02)
 

Подавить вывод можно перенаправив его в файл, например в text (как то можно подавлять вывод без создания файла, но что-то не помню как это в Windows делается).
#include <iostream>
using namespace std;

int main(int argc, char *argv[])
{
    system("chcp 1251 > text");
    cout << "Введите число" << endl;
    system("PAUSE");
    return 0;
}

>да и еще чтоб программа не исчезала мгновенно я в висуал С++ 6.0
>использовал - cin.get (); - В dev C++ это не работаеет
Для этого можно использовать system("PAUSE"), раз уж всё равно system() используется.

PS Под новые вопросы, лучше заводить новые темы.

  Ответить  
 
 автор: XPyCT   (03.04.2007 в 09:41)   письмо автору
 
   для: cheops   (02.04.2007 в 15:17)
 

Большое спасибо - далее создам новю тему
____________________________________
XPyCT

  Ответить  
 
 автор: XPyCT   (13.04.2007 в 15:08)   письмо автору
 
   для: cheops   (02.04.2007 в 15:17)
 

Из всего выше изложеного даный пример приведенный уважаемым "cheops" наиболее практичен и применяем большое спасибо.
Я испробовал все о чем здесь говорили наиболее коретно работаеет именно этот

#include <iostream>
using namespace std;

int main(int argc, char *argv[])
{
system("chcp 1251 > text");
cout << "Введите число" << endl;
system("PAUSE");
return 0;
}

  Ответить  
 
 автор: Георгий   (03.04.2007 в 23:07)   письмо автору
 
   для: SnooPI   (28.03.2007 в 12:18)
 

Есть еще один способ решения проблемы:

#include <iostream>
#include <string>
#include <locale>
using namespace std;int mainvoid )
{
  setlocale(LC_ALL, ".OCP");
  wstring rus;
  rus = L"Русские буквы"
  wcout<<rus;
  number();
  return 0;
}

Я может допустил ошибки в коде(я давно не программировал на C++), но дело в этом:
там просто используется больше чем один байт на один символ.
Локаль если не ошибаюсь можно убрать. Я этот способ давно в интернете нашел.

  Ответить  
 
 автор: like-nix   (13.06.2007 в 02:56)   письмо автору
 
   для: SnooPI   (28.03.2007 в 12:18)
 

Можно еще воспользоваться функцией chartooem

  Ответить  
 
 автор: fs444   (25.09.2009 в 13:53)   письмо автору
 
   для: like-nix   (13.06.2007 в 02:56)
 

"залезьте в свойства консольного окна и измените шрифт с точечного на Lucida Console - точечные шрифты не поддерживают cp1251."
Как попасть в эти свойства?

"Есть ещё способ выводить русские сообщения правильно - это набрать их в тексте программы сразу в нужной кодировке. Сделать это можно так - кодировка консоли у меня 866, открываю свой исходник в Far-е и выставляю досовскую кодировку (866), набираю русские сообщения и компилирую - всё отображается нормально без переключений. Пример прилагается."
Как выставить досовскую кодировку в файле? Где пример?


#include <iostream>
using namespace std;

int main(int argc, char *argv[])
{
system("chcp 1251 > text");
cout << "Введите число" << endl;
system("PAUSE");
return 0;
}

У меня не исправляет крякозябры.

  Ответить  
 
 автор: cheops   (25.09.2009 в 14:54)   письмо автору
 
   для: fs444   (25.09.2009 в 13:53)
 

1) Нажмите иконку в правом верхнем углу - появится контекстное меню из которого нужно выбрать меню "Свойства".
2) Имеется в виду редактор Far - там очень просто можно менять кодировку всего файла.

  Ответить  
 
 автор: fs444   (28.09.2009 в 10:41)   письмо автору
 
   для: cheops   (25.09.2009 в 14:54)
 

Да, в свойствах консоли были "Точечные шрифты". Поставил "Licuida Console" и наконецто увидел нормальные русские буквы=)

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

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