Авторизация



Счетчики

Обмен ссылками

Блог программиста
 Форум
Добро пожаловать Гость   [Зарегистрироваться]  Войти
Ответить
 Тема :Русские символы в консоле... 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:
Code:
#include iostream

Во вложении находится проект консольного приложения C++ Builder, в котором используется функция ToDosStr(). Вы можете, открыв этот проект в C++ Builder, копировать функцию (вместе с обоими массивами) в другие проекты. Копирование извне Билдера скорее всего даст неудовлетворительный результат.

Прикрепленные файлы
 RussianSymbols.rar [2 KB] :: Пример использования функции ToDosStr
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 ошибок :(
изза чего это они появились то? судя повсему только у меня такие проблемы..

cd395e2b56c7t.jpg
IP сохранен
Последний раз редактировалось: 02-11-2011 01:28:39 Автор Lonkaster т.к.
Цитировать
Ответить
Страница # 


Powered by ccBoard