Сейчас на форуме: hgdagon, asfa (+5 невидимых)

 eXeL@B —› Программирование —› С++, консоль и крякозябры;(
Посл.ответ Сообщение


Ранг: 107.6 (ветеран)
Активность: 0.110
Статус: Участник

Создано: 26 апреля 2007 20:06
· Личное сообщение · #1

Как справится с крякозябрами в консоли?
Написал простенькую прожку на C++, запустил, а она выдает (см. аттач)
Что с этим делать?
ЗЫ: У меня ХРюша sp1, е нее вообще командная строка какая-то глюкавая

b152_26.04.2007_CRACKLAB.rU.tgz - Bin.rar

-----
программистом не рождаются - им умирают




Ранг: 516.1 (!), 39thx
Активность: 0.280
Статус: Участник

Создано: 26 апреля 2007 20:09
· Личное сообщение · #2

SetConsoleOutputCP/SetConsoleCP



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 26 апреля 2007 20:10
· Личное сообщение · #3

В досовой кодировке наверное надо писать.



Ранг: 228.7 (наставник), 2thx
Активность: 0.120
Статус: Участник
malware research

Создано: 26 апреля 2007 20:44
· Личное сообщение · #4

SetConcoleOutputCP(1251);
printf("Любой текст по-русски");
..............
В свойствах консоли еще прийдется выставить шрифт Lucida Console

-----
Research is my purpose




Ранг: 60.4 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 27 апреля 2007 02:12
· Личное сообщение · #5

API-функции AnsiToOem и OemToAnsi. Подробнее в MSDN



Ранг: 352.4 (мудрец), 4thx
Активность: 0.150
Статус: Участник
retired

Создано: 27 апреля 2007 02:56
· Личное сообщение · #6

точнее CharToOem/OemToChar



Ранг: 495.3 (мудрец)
Активность: 0.30
Статус: Участник

Создано: 27 апреля 2007 06:49
· Личное сообщение · #7

Vovan666 пишет:
В досовой кодировке наверное надо писать.

Во-во.
ИМХО проще набирать исходник в редакторе FAR'а, чем забивать код лишними функциями.

-----
Всем привет, я вернулся




Ранг: 516.1 (!), 39thx
Активность: 0.280
Статус: Участник

Создано: 27 апреля 2007 08:28
· Личное сообщение · #8

Bitfry



Ранг: 60.4 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 27 апреля 2007 09:18
· Личное сообщение · #9

Bitfry, в Visual Studio тогда краказяблами будут комменты отображаться. А писать в одном файле с несколькими кодировками



Ранг: 39.6 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 27 апреля 2007 12:44 · Поправил: NetSpider
· Личное сообщение · #10

Попробуй вот такую фун-ю

char bufRus[256];
char *Rus(const char *text){
CharToOem(text,bufRus);
return bufRus;
}


Пример использования
// Создание последовательного файла
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
#include <windows.h>
char *Rus(const char *text);

main()
{
ofstream outClientFile("clients.dat", ios::out);
if (! outClientFile) {
cerr << Rus("Файл не может быть открыт") << endl;
exit(1);
}
cout << Rus("Введите ваш счет, имя и баланс.") << endl
<< Rus("Введите EOF для окончания ввода.") << endl << "? ";
int account;
char name[10];
float balance;
while (cin >> account >> name >> balance) {
outClientFile << account << ' ' << Rus(name) << ' ' << balance << endl;
cout << "? ";
}
return 0;
}

char bufRus[256];
char *Rus(const char *text){
CharToOem(text,bufRus);
return bufRus;
}




Ранг: 107.6 (ветеран)
Активность: 0.110
Статус: Участник

Создано: 27 апреля 2007 13:50
· Личное сообщение · #11

Bitfry пишет:
ИМХО проще набирать исходник в редакторе FAR'а, чем забивать код лишними функциями.


Так и буду действовать на первых порах - пока только начал изучать этот язык

NetSpider пишет:
Попробуй вот такую фун-ю

Спсиб! Попробовал - работает. Пожалуй, эта функция будет у меня основным инструментом, когда я углублюсь в C++

PS. Всем спасибо, тема закрыта.

-----
программистом не рождаются - им умирают



 eXeL@B —› Программирование —› С++, консоль и крякозябры;(
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати