|
Форум |
|
|
|
|
Тема :Русские символы в консоле...
24-02-2010 14:11:03
|
|
|
rudolf |
|
char |
 |
Онлайн с: 24-02-2010 11:03:24
Сообщения: 31
Среда обитания: |
|
|
|
прочитал вот эту http://www.trivialcoding.ru/Programs/Borland-C-Builder/russian-symbols-c-builder.html статью.
Только у меня не получаеться реализовать эту функцию.
Я делал как написано там:
1)поместил русский алфавит в WordPad и сохранил как текстовый документ MS-DOS
2)создал в Builder'е новое консольное приложение и, ничего туда не добавляя, сохранил его, после чего закрыл билдер.
3)вместо файла unit1.cpp вставил свой файл с алфавитом(п.1).
4)запускаю проект, а там нчиего кроме несовсем понятных символов нету(впринципе что и следовало ожидать)
а вот что потом делать с функцией, которя приведена в статье я не понял. Пытался копировать ее туда, создавал полностью новое приложение и вставлял туда эту функцию - ничего не вышло. И еще Builder ошибку кидает, мол string не являеться объектом класса std.
Вобщем, если у кого-то уже получилось написать эту функцию - скиньте пожалуйста мне на sdbox@tut.by |
IP сохранен
|
|
|
|
|
|
Тема :Re:Русские символы в консоле...
25-02-2010 17:49:24
|
|
|
rudolf |
|
char |
 |
Онлайн с: 24-02-2010 11:03:24
Сообщения: 31
Среда обитания: |
|
|
|
у меня еще возникают проблемы с std::string
Если не турдно, можно ссылку на готовую функцию(я имею ввиду сам .cpp-файл с работающей функцией)? |
IP сохранен
|
|
|
|
|
|
Тема :Re:Русские символы в консоле...
25-02-2010 18:11:07
|
|
|
Captain |
|
int main() |
 |
Онлайн с: 28-03-2009 11:37:34
Сообщения: 39
Среда обитания: |
|
|
|
Чтобы преобразовать полученный в WordPad файл в работающую программу, нужно, переименовав его в Unit1.cpp (по умолчанию) и заменив им исходный файл, открыть проект в C++ Builder, а затем непосредственно перед уже имеющимися неразборчивыми символами вставить
Code:
#include iostream
const int N = 66;
const char DosABC[N] =
а непосредственно после них -
Code:
; //Точка с запятой после объявления массива
const char WinABC[N] =
"абвгдеёжзийклмнопрстуфхцчшщъыьэюя" //Эти две строки должны быть разборчивы
"АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"; //Скорее всего, вам придется набрать их вручную в текстовом редакторе Билдера
std::string ToDosStr(std::string input)
{
std::string output = "";
bool Ok;
for (unsigned i = 0; i input.length(); i++)
{
Ok = false;
for (int j = 0; j N; j++)
if (input[i] == WinABC[j])
{
output += DosABC[j];
Ok = true;
}
if (!Ok)
output += input[i];
}
return output;
}
int main() //Функция main может быть, например, такой
{
std::cout ToDosStr("Если вы меня видите, значит, все хорошо!;)");
std::cin.get();
}
Использование этой функции выглядит так: во всех случаях, когда вам нужно вывести какой-то строковой литерал, то вы вместо, например,
Code:
std::cout "Это - строка!";
пишите
Code:
std::cout ToDosStr("Это - строка!");
Цитата:
И еще Builder ошибку кидает, мол string не являеться объектом класса std.
Возможно, вы забыли включить (include) заголовочный файл iostream:
Во вложении находится проект консольного приложения C++ Builder, в котором используется функция ToDosStr(). Вы можете, открыв этот проект в C++ Builder, копировать функцию (вместе с обоими массивами) в другие проекты. Копирование извне Билдера скорее всего даст неудовлетворительный результат.
|
IP сохранен
|
|
|
|
|
|
Тема :Re:Русские символы в консоле...
25-02-2010 18:20:08
|
|
|
rudolf |
|
char |
 |
Онлайн с: 24-02-2010 11:03:24
Сообщения: 31
Среда обитания: |
|
|
|
Спасибо.
Я подключал iostream.h, но, неизвестно почему, все равно не работало.
То, что скинули вы работает. Спасибо. |
IP сохранен
|
|
|
|
|
|
Тема :Re:Русские символы в консоле...
02-03-2010 14:37:10
|
|
|
Captain |
|
int main() |
 |
Онлайн с: 28-03-2009 11:37:34
Сообщения: 39
Среда обитания: |
|
|
|
Добавлю еще, что статья дополнена - описано решение обратной задачи (перекодировка из кодировки ASCII (DOS) в ANSI (Windows)), приведен полный пример работы с русскими символами (ввод и вывод), а также к статье прикреплен архив полностью работоспособного проекта работы со строками русских символов (в том числе и ввод таких строк). |
IP сохранен
|
|
|
|
|
|
Тема :Re:Русские символы в консоле...
11-03-2010 15:44:00
|
|
|
rudolf |
|
char |
 |
Онлайн с: 24-02-2010 11:03:24
Сообщения: 31
Среда обитания: |
|
|
|
у меня один вопрос возник:
почему в коде написано std::string, а не просто string? |
IP сохранен
|
|
|
|
|
|
Тема :Re:Русские символы в консоле...
11-03-2010 22:24:19
|
|
|
Captain |
|
int main() |
 |
Онлайн с: 28-03-2009 11:37:34
Сообщения: 39
Среда обитания: |
|
|
|
Потому что стандартная строка string находится в стандартном пространстве имен std, соответственно для ее использования необходимо использовать один из трех вариантов:
- Везде писать ее с префиксом std::
Code:
std::string s;
std::cin >> s;
- Использовать using-директиву для того, чтобы все содержимое пространства имен стало глобальным (не советую так делать)
Code:
using namespace std;
string s;
cin >> s;
- Использовать using-объявления
Code:
using std::string;
string s;
std::cin >> s;
|
IP сохранен
|
|
|
|
|
|
Тема :Re:Русские символы в консоле...
02-11-2011 01:28:39
|
|
|
Lonkaster |
|
Hello, world! |
 |
Онлайн с: 01-11-2011 21:07:30
Сообщения: 1
Среда обитания: |
|
|
|
не могу понять, как так получилось, скачал архив с проэктом на русские символы, открыл, запускаю выдает 16 ошибок 
изза чего это они появились то? судя повсему только у меня такие проблемы..
|
IP сохранен
|
Последний раз редактировалось: 02-11-2011 01:28:39 Автор Lonkaster т.к. |
|
|
|
|