Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.70/56: Рейтинг темы: голосов - 56, средняя оценка - 4.70
40 / 38 / 5
Регистрация: 22.01.2011
Сообщений: 670

reinterpret_cast

11.03.2011, 15:33. Показов 11382. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите плиз, чем отличается функция reinterpret_cast от static_cast?
небольшой пример:
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
const int MAX = 100;       // размер буфера
int buff[MAX];             // буфер для целых чисел
 
int main()
{
  for(int j=0; j<MAX; j++) // заполнить буфер данными
    buff[j] = j;           // (0, 1, 2, ...)
                           // создать выходной поток
  ofstream os("edata.dat", ios::binary);
                           // записать в него
  os.write(reinterpret_cast<char*>(buff), MAX*sizeof(int) );
  os.close();              // должен закрыть его
 
  for(j=0; j<MAX; j++)     // стереть буфер
    buff[j] = 0;
                           // создать входной поток
  ifstream is("edata.dat", ios::binary);
                           // читать из него
  is.read( reinterpret_cast<char*>(buff), MAX*sizeof(int) );
 
  for(j=0; j<MAX; j++)     // проверка данных
    if( buff[j] != j )
      { cerr << "Некорректные данные!\n"; return 1; }
  cout << "Данные корректны\n";
}
os.write(reinterpret_cast<char*>(buff), MAX*sizeof(int) );
is.read( reinterpret_cast<char*>(buff), MAX*sizeof(int) );
что тут особенного делают эти функции?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.03.2011, 15:33
Ответы с готовыми решениями:

reinterpret_cast<...>(...)
Всем привет! Сразу к делу. ВОПРОС: Как преобразовать переменную типа float в указатель типа double; КРАТКОЕ ОПИСАНИЕ...

Reinterpret_cast
Не могу понять к чему тут этот каст и каким образом он влияет на результат. char zxc = ((*(reinterpret_cast&lt;const...

Reinterpret_cast
Результат работы функции reinterpret_cast равен нулю. Почему и как исправить? (Кстати ещё буду рад, если объясните как можно уменшить...

4
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
11.03.2011, 15:35
dimon1984, reinterpret_cast делает преобразование несовместимых типов
в данном примере он массив int (то бишшь указатель на него) преобразует в указатель на char
1
40 / 38 / 5
Регистрация: 22.01.2011
Сообщений: 670
19.03.2011, 20:37  [ТС]
ещё не совсем разобрался. Простите, если глупые вопросы, просто самоучка, неукого спросить про мелочи.
C++
1
2
3
  ofstream os("data.txt");
  for(i=0;i<20;i++)
    os.put((char)i);   //os.put(i);
почему не записывает в файл символы? А только надо os << i;
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class person              // класс person
  {
  protected:
    char name[80];        // имя человека
    short age;            // возраст
  public:
    void getData()        // получить данные о человеке
      {
      cout << "Введите имя: "; cin >> name;
      cout << "Введите возраст: "; cin >> age;
      }
  };
///////////////////////////////////////////////////////////
int main()
  {
  person pers;            // создать объект
  pers.getData();         // получить данные
                          // создать объект ofstream
  ofstream outfile("PERSON.DAT", ios::binary);
                          // записать в него
  outfile.write(reinterpret_cast<char*>(&pers), sizeof(pers));  // растолкуйте плиз эту строчку поконкретней
  return 0;
  }
И про запись в файл в бинарном виде (ios::binary) обьясните плиз или дайте ссылку.
Тоесть допустим записывается тип int в файл (к примеру число 5) .
В файле это число будет занимать байт, да? А в случае с бинарной записью что будет?

Добавлено через 7 часов 48 минут
подскажите плиз
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
19.03.2011, 22:34
Цитата Сообщение от dimon1984 Посмотреть сообщение
почему не записывает в файл символы? А только надо os << i
дело в том что есть разница между put( (char)0 ) и put( '0' )
когда вы делаете cout << 0 компилятор сам делает преобразование 0 -> '0'
на второй лень отвечать ибо гуглить, там все просто
1
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
09.04.2016, 15:14
Цитата Сообщение от dimon1984 Посмотреть сообщение
is.read( reinterpret_cast<char*>(buff), MAX*sizeof(int) );
а зачем этот reinterpret_cast раз так все норм
C++
1
is.read( (char*)(buff), MAX*sizeof(int) );
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.04.2016, 15:14
Помогаю со студенческими работами здесь

Проблема с reinterpret_cast
Здравствуйте. Прошу вашей помощи с C/C++. Я не знаком с этими языками, но мне пришлось написать небольшую библиотечку, т.к. больше ни какой...

По функции reinterpret_cast
Доброго времени суток, коллеги! Навоял вот такой код: #include&lt;iostream&gt; using namespace std; int main() { ...

Оператор reinterpret_cast
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int main() { int x3 = -0x00260305; cout &lt;&lt;hex &lt;&lt;...

Преобразование (reinterpret_cast)
ifstream infile(&quot;person.dat&quot;, ios::binary); infile.read(reinterpret_cast&lt;char*&gt;(&amp;pers),sizeof(pers)); pers - объект класса. ...

Reinterpret_cast и указатели
Добрый вечер. Есть вот такая конструкция: *reinterpret_cast&lt;Offsets::UnitGender*&gt;(pPlayerFields + Offsets::Unit::Gender) =...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru