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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.62
PavelA
Сообщений: n/a
#1

Аналоги функций ord() и chr() - C++

25.01.2010, 23:34. Просмотров 3516. Ответов 5
Метки нет (Все метки)

Господа, программисты Си!
Подскажите пожалуйста, есть ли (и какие) сишные аналоги функций ord() и chr() из паскаля?
Большое спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.01.2010, 23:34     Аналоги функций ord() и chr()
Посмотрите здесь:

C++ Какая функция в C++ аналогична Ord в Delphi?
C++ Напишите свои аналоги функций strlen(), strcpy(), strcmp() и сравните с библиотечными.
Аналог ord и chr в С++ C++
Есть в языке "С" аналоги функций Pos() и Delete()? C++
функция ord в С++ C++
Деструкторы, аналоги освобождения памяти C++
Какой заголовочный файл надо для функции ord() ? C++
C++ Написать собственные аналоги функций strlen, strcmp, strchr, strcpy, strcat (дописать и исправить ошибки)
Указатель на функию или аналоги C++
C++ Реализация/Аналоги синглтона в dll
C++ Существуют ли аналоги функции sscanf на c++?
C++ Chr() на C++ как на Pascal

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
bazile
58 / 34 / 19
Регистрация: 15.03.2007
Сообщений: 6,911
26.01.2010, 14:28     Аналоги функций ord() и chr() #2
Прямых аналогов нет. В них просто нет нужды. Символы из стандартной строки (char[] или char*) можно интепретировать сразу и как символ и как его код.
Напрмиер
C++
1
2
3
4
5
char* str = 'Hello, World';
str[2] = 32; // записать символ с кодом 32
str[3] = ' ' // записать символ пробела
char ch = str[5]; // сохраняем 6 символ строки. 
                  // можно работать с ними и как с символом и как с числом
PavelA
Сообщений: n/a
26.01.2010, 16:47     Аналоги функций ord() и chr() #3
может я чего-то недопонял...
Но,допустим у меня есть строка:
C++
1
char* str = 'Hello, World';
Как мне получить коды символов из строки?
bazile
58 / 34 / 19
Регистрация: 15.03.2007
Сообщений: 6,911
26.01.2010, 16:52     Аналоги функций ord() и chr() #4
Например, так:
C++
1
2
3
4
5
6
7
char* str = 'Hello, World';
int len = strlen(str);
for (int i=0; i<len; i++)
{
    char char_code = str[i];
    ...
}
PavelA
Сообщений: n/a
26.01.2010, 19:15     Аналоги функций ord() и chr() #5
Спасибо тебе большое за ответы!
Последний вопрос: подскажите пожалуйста, правильно ли я переписал функцию с паскаля на Си:

функция на паскале:
Pascal
1
2
3
4
5
6
7
8
9
10
11
function rus(mes:string):string;
var i:integer;
begin
for i:=1 to length(mes) do
 begin
  case mes[i] of
   'А'..'П':mes[i]:=chr(ord(mes[i]-64));
   'Р'..'Я':mes[i]:=chr(ord(mes[i]-16));
 end;
result:=mes;
end;
таже функция на Си:
C++
1
2
3
4
5
6
7
8
9
10
11
char* rus(char* mes)
 {
  int i;
  int len=sizeof(mes);
  for(i=0;i<len;i++)
   {
    if ((mes[i]>'А')&&(mes[i]<'П'))mes[i]-=64;
    if ((mes[i]>'Р')&&(mes[i]<'Я'))mes[i]-=16;
   }
  return mes;
   }
Или я что-то неправильно сделал (просто у меня сейчас нет возможности это проверить)?
Приму любые предложения и замечания!

Заранее всем спасибо.
bazile
58 / 34 / 19
Регистрация: 15.03.2007
Сообщений: 6,911
27.01.2010, 14:24     Аналоги функций ord() и chr() #6
Есть ошибки. Вместо sizeof() надо использовать strlen и в условия неточные были
C++
1
2
3
4
5
6
7
8
9
10
11
char* rus(char* mes)
{
    int i;
    int len = strlen(mes);
    for (i=0;i<len; i++)
    {
        if ((mes[i]>='А') && (mes[i]<='П')) mes[i]-=64;
            else if ((mes[i]>='Р') && (mes[i]<='Я')) mes[i]-=16;
    }
    return mes;
}
Эту функцию можно написать еще вот так:
C++
1
2
3
4
5
6
7
8
9
char* rus(char* mes)
{
    for (char* ptr=mes; *ptr; ptr++)
    {
        if ((*ptr>='А') && (*ptr<='П')) *ptr -= 64;
            else if ((*ptr>='Р') && (*ptr<='Я')) *ptr -= 16;
    }
    return mes;
}
Yandex
Объявления
27.01.2010, 14:24     Аналоги функций ord() и chr()
Ответ Создать тему
Опции темы

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