C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Консольное приложение, Результаты отображения информации
Юрий
  Отправлено: 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;
}

smile.gif
Anium
Отправлено: 24.10.2006, 14:20


Ученик-кочегар

Группа: Участник
Сообщений: 16



Пишет ошибки: sad.gif

[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;
}

А, если так попробовать??
wink.gif
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 sad.gif
Где мне можно найти эту библиотеку?

Отредактировано 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



Спасибо! yahoo.gif
Теперь работает, может быть потому что установил BCB6_ENT_Update_4.exe с офиц. сайта smile.gif

Отредактировано 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

Вернуться в Вопросы программирования в C++Builder