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

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

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

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

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

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

Аналог ord и chr в С++ - C++
сабж.

Напишите свои аналоги функций strlen(), strcpy(), strcmp() и сравните с библиотечными. - C++
Напишите свои аналоги функций strlen(),strcpy(),strcmp() и сравните с библиотечными. Наивно написал эти функции: int strlen(char*...

Написать собственные аналоги функций strlen, strcmp, strchr, strcpy, strcat (дописать и исправить ошибки) - C++
вот задание: Написать собственные аналоги функций strlen, strcmp, strchr, strcpy, strcat из стандартной библиотеки cstring (string.h). ...

Есть в языке "С" аналоги функций Pos() и Delete()? - C++
Если есть, то напишите.

функция ord в С++ - C++
Объясните пожалуйста, что обозначает эта функция и для чего используется? Например строчка (A)++; что обозначает? Заранее спасибо.

Какая функция в C++ аналогична Ord в Delphi? - C++
знаю в делфи есть функция Ord для получения кода ASCI символа, может кто знает аналог в С++(Builder) и обратную ей функцию???

5
bazile
58 / 34 / 20
Регистрация: 15.03.2007
Сообщений: 6,910
26.01.2010, 14:28 #2
Прямых аналогов нет. В них просто нет нужды. Символы из стандартной строки (char[] или char*) можно интепретировать сразу и как символ и как его код.
Напрмиер
C++
1
2
3
4
5
char* str = 'Hello, World';
str[2] = 32; // записать символ с кодом 32
str[3] = ' ' // записать символ пробела
char ch = str[5]; // сохраняем 6 символ строки. 
                  // можно работать с ними и как с символом и как с числом
0
PavelA
Сообщений: n/a
26.01.2010, 16:47 #3
может я чего-то недопонял...
Но,допустим у меня есть строка:
C++
1
char* str = 'Hello, World';
Как мне получить коды символов из строки?
bazile
58 / 34 / 20
Регистрация: 15.03.2007
Сообщений: 6,910
26.01.2010, 16:52 #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];
    ...
}
0
PavelA
Сообщений: n/a
26.01.2010, 19:15 #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 / 20
Регистрация: 15.03.2007
Сообщений: 6,910
27.01.2010, 14:24 #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;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2010, 14:24
Привет! Вот еще темы с ответами:

Какой заголовочный файл надо для функции ord() ? - C++
Всем привет... Тут такая напасть случилась забыл заголовочный файл(include &lt;???&gt;) для функции ord =)

Chr() на C++ как на Pascal - C++
Как пишется chr() на С++ как на Pascal? Добавлено через 43 минуты #include &lt;iostream&gt; #include &lt;string.h&gt; using namespace std; ...

Есть ли в c++ аналоги Паскалевских in и - C++
Есть ли в c++ аналоги Паскалевских in и ..? Или всей конструкции целиком (x1 in ) Заранее благодарен.

С / С++ Есть ли аналоги strstr() ? - C++
Есть ли функция которая не возвращала бы позицию вхождения строки str1 в str2, а просто выдавала бы true / false если строка входит / не...


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

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
27.01.2010, 14:24
Ответ Создать тему
Опции темы

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