| Юрий | 
|  Отправлено: 24.10.2006, 11:13 |  | 
| 
 Ученик-кочегар
 
 Группа: Участник
 Сообщений: 12
 
 
 
  
 | У меня в Builder C++6 ent в консоли результаты на русском языке отображаются в виде закорючек.. Пожалуйста подскажите, возможно ли и каким способом избавится от этого неудобства?? | 
|  | 
| Admin | 
| Отправлено: 24.10.2006, 11:27 |  | 
|  
 Владимир
 
 Группа: Администратор
 Сообщений: 1190
 
 
 
  
 | CharToOem() OemToChar() | 
|  | 
| Anium | 
| Отправлено: 24.10.2006, 12:40 |  | 
| 
 Ученик-кочегар
 
 Группа: Участник
 Сообщений: 16
 
 
 
  
 | | QUOTE (Admin @ 24.10.2006, 12:27) |  | CharToOem()  OemToChar() | 
 Я извиняюсь, вот только начал изучать с++, но можно поподробнее пояснить куда именно что вписать на классическом примере "Привет, Мир!" :
 
 | CODE |  | #include <iostream.h>
 #include <conio.h>
 
 main()
 {
 cout << "Привет, Мир! \n";
 getch();
 }
 | 
 
 Отредактировано Anium — 24.10.2006, 14:02
 | 
|  | 
| Юрий | 
| Отправлено: 24.10.2006, 13:41 |  | 
| 
 Ученик-кочегар
 
 Группа: Участник
 Сообщений: 12
 
 
 
  
 | Спасибо.. Вот пример:
 
 #include "stdafx.h"
 #include "windows.h"
 
 int main(int argc, char* argv[])
 {
 char s[]="Привет, Мир!";
 CharToOem(s,s);
 printf("%s\n", s);
 return 0;
 }
 
 
   | 
|  | 
| Anium | 
| Отправлено: 24.10.2006, 14:20 |  | 
| 
 Ученик-кочегар
 
 Группа: Участник
 Сообщений: 16
 
 
 
  
 | Пишет ошибки:  
 [C++ Error] Unit1.cpp(1): E2209 Unable to open include file 'stdafx.h'
 [C++ Error] Unit1.cpp(8): E2268 Call to undefined function 'printf'
 | 
|  | 
| Юрий | 
| Отправлено: 24.10.2006, 14:49 |  | 
| 
 Ученик-кочегар
 
 Группа: Участник
 Сообщений: 12
 
 
 
  
 | #include #include
 #include
 #include "windows.h"
 #pragma hdrstop
 #pragma argsused
 int main(int argc, char* argv[])
 {
 char s[]="Привет, Мир!";
 CharToOem(s,s);
 printf("%s\n", s);
 getch();
 return 0;
 }
 
 А, если так попробовать??
 
   | 
|  | 
| Anium | 
| Отправлено: 24.10.2006, 15:02 |  | 
| 
 Ученик-кочегар
 
 Группа: Участник
 Сообщений: 16
 
 
 
  
 | ещё больше ошибок... Вот нашёл исходник статьи "Вывод русских букв в стандартный поток вывода":
 
 
 | CODE |  | /*
 
 Данный пример иллюстрирует вывод русских строк в консоль через стандартный поток вывода.
 
 Для этого нужно подключить "atlstr.h". Функция CharToOem выполняет преобразование.
 
 Вот её синтаксис:
 
 CharToOem(char * source, char * dest);
 
 Первым параметром передаётся строка-источник, вторым — приёмник.
 
 Преобразование нужно проводить только для вывода, для вывода в файл это делать не нужно.
 
 -----------------------------------------------------------------------------------------
 
 */
 
 #include <iostream.h>
 
 #include <fstream.h>
 
 #include <atlstr.h> //нужна для функции CharToOem
 
 void ConOut(char * str);
 
 void FileOut(char * fname, char * str);
 
 void main()
 
 {
 
 char string[]="Теперь консоль говорит по-русски!";
 
 ConOut(string);
 
 ConOut("\nCopyright (C) 2004");
 
 FileOut("Test.txt",string);
 
 cin.get();
 
 }
 
 void ConOut(char * str)
 
 {
 
 char * buf=new char[strlen(str)];
 
 CharToOem(str, buf); //преобразование
 
 cout<<buf<<endl;
 
 }
 
 void FileOut(char * fname, char * str)
 
 {
 
 ofstream file(fname);
 
 file<<str<<endl; //выводим в файл — преобразования не выполняем
 
 }
 
 | 
 
 И выдаёт ошибку о том, что не найдена atlstr.h
  Где мне можно найти эту библиотеку?
 
 Отредактировано Anium — 24.10.2006, 16:10
 | 
|  | 
| olegenty | 
| Отправлено: 24.10.2006, 15:05 |  | 
| 
 Ветеран
 
 Группа: Модератор
 Сообщений: 2412
 
 
 
  
 | вообще-то функция объявлена в < winuser.h> (см. MSDN) | 
|  | 
| Юрий | 
| Отправлено: 24.10.2006, 15:21 |  | 
| 
 Ученик-кочегар
 
 Группа: Участник
 Сообщений: 12
 
 
 
  
 | #include #include
 #include
 #pragma hdrstop
 #pragma argsused
 int main(int argc, char* argv[])
 {
 char s[]="Здравствуй, Мир!";
 CharToOem(s,s);
 printf("%s\n", s);
 getch();
 return 0;
 }
 
 Внимательно просмотри код и попробуй ещё раз.....
 iostream.h
 conio.h
 vcl.h
 
 Отредактировано Юрий — 24.10.2006, 16:23
 | 
|  | 
| Anium | 
| Отправлено: 24.10.2006, 15:27 |  | 
| 
 Ученик-кочегар
 
 Группа: Участник
 Сообщений: 16
 
 
 
  
 | Спасибо!  Теперь работает, может быть потому что установил BCB6_ENT_Update_4.exe с офиц. сайта
  
 Отредактировано Anium — 24.10.2006, 16:30
 | 
|  | 
| Anium | 
| Отправлено: 24.10.2006, 15:41 |  | 
| 
 Ученик-кочегар
 
 Группа: Участник
 Сообщений: 16
 
 
 
  
 | PS: Может глупый вопрос, но зачем все эти усложнения: 
 
 #pragma hdrstop
 #pragma argsused
 int main(int argc, char* argv[])
 
 
 когда всё отлично работает и так?:
 
 
 | CODE |  | #include <iostream.h>
 #include <conio.h>
 #include <vcl.h>
 main()
 {
 char s[]="Привет, мир!";
 CharToOem(s,s);
 printf("%s\n", s);
 getch();
 return 0;
 }
 
 | 
 | 
|  | 
| olegenty | 
| Отправлено: 24.10.2006, 15:50 |  | 
| 
 Ветеран
 
 Группа: Модератор
 Сообщений: 2412
 
 
 
  
 | это не усложнения, а возможность запуска программы с параметрами, как, например: 
 rar.exe a yo.txt yo.rar
 | 
|  |