Консультация № 28256
24.10.2005, 23:01
0.00 руб.
0 6 5
Уважаемые эксепрты! Дайте пожалуйста ответ на глупый вопрос. Решил познакомиться с C++ и поставил Visual C++ 6. При запуске простейшего консольного приложения вместо кирилицы отбражается какая-то билиберда. Что надо сделать, чтобы русские символы рисовались правильно? В самой IDE все нормально. А также подскажите, где в этой среде найти командную строку запуска компилятора. К сожалению книги по Visual C++ пока не смог найти. Ваще проблема:(

Приложение:
/* Консольная C++ - программа*/#include <iostream>using namespace std;int main(){ cout << "Это консольная программа на C++"; return 0;}

Обсуждение

Неизвестный
24.10.2005, 23:28
общий
это ответ
Здравствуйте, Domian!

http://sources.ru/cpp/tips/ruschar_in_console.shtml
Неизвестный
25.10.2005, 10:35
общий
это ответ
Здравствуйте, Domian!
Все потому что в Visual C++ кодировка ср1251, а в консоли 866-я. Самое простое взять редактор с 866 кодировкой и переписать в нем все, что на русском, а потом скомпилировать в Visual.
давно
Специалист
742
345
25.10.2005, 18:34
общий
это ответ
Здравствуйте, Domian!
Используй функцию CharToOEM

Приложение:
The CharToOem function translates a string into the OEM-defined character set.SyntaxBOOL CharToOem( LPCTSTR lpszSrc, LPSTR lpszDst);ParameterslpszSrc[in] Pointer to the null-terminated string to translate. lpszDst[out] Pointer to the buffer for the translated string. If the CharToOem function is being used as an ANSI function, the string can be translated in place by setting the lpszDst parameter to the same address as the lpszSrc parameter. This cannot be done if CharToOem is being used as a wide-character function.
Неизвестный
25.10.2005, 22:32
общий
это ответ
Здравствуйте, Domian!
вариантов несколько:
1. Выводить в консоль в юникоде (WriteConsoleW или WriteFileW, например).
2. Перекодировать символы перед выводом в кодировку 866 (CharToOem).
3. Писать только на английском.
Функция SetConsoleOutputCP у меня почему-то не работает, так что ее использовать смысла нет.
VC++ использует компилятор cl.exe. Простейший его запуск:
cl.exe 1.cpp
Неизвестный
25.10.2005, 22:56
общий
Господа, к сожалению не могу ответить каждому и выставить оценки, потому что письма читаю не в браузере, а в почтовой проге. Если бы мог, всем бы поставил 5, потому что откликнулись, разъяснили и сказали что делать. Особенно мне понравился ответ №3 from Bob Johnson. Thanks.
Неизвестный
26.10.2005, 00:03
общий
это ответ
Здравствуйте, Domian!
Насчет консоли посмотри здесь, проблема описывается достаточно подробно:
http://www.rsdn.ru/article/qna/ui/concp.xml
Насчет второго непонятно. Ты имеешь в виду как передать агрументы в приложение в дебаге? В свойствах проекта - Debugging -> Command Arguments.
Если просто запустить компилятор через консоль - находишь cl.exe и запускаешь...
Параметры можно найти в МСДН
Форма ответа