Юрий |
Отправлено: 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
|
|