Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
GOD_EVIL
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 26
#1

Include rus - C++

03.04.2013, 00:27. Просмотров 349. Ответов 1
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
const int N = 66;
const char DosABC[N] =
"*ЎўЈ¤Ґс¦§Ё©Є«¬*®Їабвгдежзийклмноп"  
"ЂЃ‚ѓ„…р†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—˜™љ›њќћџ"; 
const char WinABC[N] =
"абвгдеёжзийклмнопрстуфхцчшщъыьэюя"
"АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
 
std::string rus(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;
 }
Объясните этот include, что делает каждая строчка
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2013, 00:27     Include rus
Посмотрите здесь:

Как пользоваться компилятором RUS++? - C++
Скачал не понял.Написано синтаксис русский. http://old-dos.ru/index.php?page=files&amp;mode=files&amp;do=show&amp;id=5523

Проверка ввода. Символ 'а' (rus) - C++
В функции main присутствует проверка: for(;;){ cout &lt;&lt; &quot;Введите количество дисков (0-выход): &quot;; fflush(stdin); ...

Microsoft Visual Studio 2010 (rus)по настройке. - C++
Что это означает? http://***************/question/70790618/

Не нумеруются строки в визуал студио 2013(RUS) - C++
как сделать так чтобы нумеровались строк визуал студио 2013(RUS)

Microsoft Visual Studio 2010 (rus) настройка unicod - C++
Microsoft Visual Studio 2010. Не подскажите где в нстройках найти Unicod ? Чтобы после компиляции,отображались русские символы,а не...

Кодировки - setlocale (LC_CTYPE, "rus") - C++
Проблемы с кодировками - setlocale (LC_CTYPE, &quot;rus&quot;) Банальщина, но решить просто не могу.. В общем при использовании русских шрифтов,...

Почему когда в рабочую программу вставляю setlocale(LC_ALL, "Rus"); она перестает корректно работать - C++
Программа сначала считывает данные с файла, потом сортирует их и сохраняет. Мне нужно было сделать меню на русском, но после добавления...

#include в C++ - C++
Здраствуйте, скажите пожалуйсто какие #include являются основными, я открыл папку include у себя в компелятори, там кучи файлов, все...

#include - C++
не понимаю какие &lt;stdio.h&gt;,&lt;time.h&gt; и т.д использовать. пыталась найти их характеристики в интернете, но толкового ответа не нашла,...

Проблемы с include - C++
Здравствуйте! Возникла проблема. Пользовался поиском, не помогло. Понимаю, что я не первый, кто просит помощи в подобной ситуации, но...

#include <iostream> - C++
Объясните для чего применяется эта директива.

#include <commctrl.h> - C++
зачем нужен это библиотека #include &lt;commctrl.h&gt; какие у него функции


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
anmartex
...
1701 / 1194 / 495
Регистрация: 12.02.2013
Сообщений: 1,978
03.04.2013, 05:34     Include rus #2
GOD_EVIL, этот велосипед выполняет конвертацию кодировки cp1261 в cp866. Причём очень брутально .
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
const int N = 66; // 33 буквы на каждый из регистров
const char DosABC[N] = "*ЎўЈ¤Ґс¦§Ё©Є«¬*®Їабвгдежзийклмноп" // Кодировка cp866
                       "ЂЃ‚ѓ„…р†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—&#152;™љ›њќћџ";
const char WinABC[N] = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя" // Кодировка cp1251
                       "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
 
// Входная строка Win (cp1251), выходная Dos(cp866)
std::string rus(std::string input)
{
   std::string output = ""; // Выходная строка для Dos (cp866) кодировки
   bool Ok; // Будет устанавливаться в true если символ является
            // русской буквой, иначе false
   // Перебираем все символы из входной строки
   for (unsigned i = 0; i < input.length(); i++)
   {
      Ok = false;
      // Перебираем все символы из WinABC(cp1251) сравнивая его с текущим
      // Если находим соответствие, то присваиваем выходной строке
      // символ из DosABC(cp866) того же индекса
      for (int j = 0; j < N; j++)
         if (input[i] == WinABC[j])
         {
            output += DosABC[j];
            Ok = true;
         }
      // Если символ не относился у русскому алфавиту, то
      // его просто переписываем в выходную строку
      if (!Ok)
      {
         output += input[i];
      }
   }
   return output;
}
P.S.: проще и правильнее воспользоваться WinAPI функцией BOOL AnsiToOem(LPCSTR, LPSTR)
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru