Для чего нужно (char *) при взятии адреса &mass_size?

240
30 января 2019, 21:50

Нужно записать в бинарный файл число типа int, хранящееся в переменной mass_size

fin.write((char *)&mass_size, sizeof(int))

Для чего нужно (char *) при взятии адреса &mass_size?

Answer 1

Используемый вами метод write, очевидно, принимает параметр типа char * или что-то в этом роде. Так как неявные преобразования указателей в/из типа char * в С++ не поддерживаются, их приходится прописывать явно. (char *) - это и есть явное преобразование указателя &mass_size к типу char *. Кто-то, возможно, заметит, что в С++ коде разумнее было бы выразить его как reinterpret_cast<char *>(&mass_size).

Например, метод write стандартного класса std::ostream принимает именно const char *. Почему именно const char *, а не const void *? Вероятнее всего для того, чтобы подчеркнуть тот факт, что метод write - это НЕ метод для записи в поток именно бинарных данных, а метод для посимвольной записи именно символьной последовательности явно указанной длины. Если поток открыт в текстовом режиме, символы этой последовательности будут потенциально подвергнуты соответствующим преобразованиям, что делает такую запись уже совсем не "бинарной". "Бинарность" записи определяется именно свойствами самого потока, а не [только] выбранным для записи методом.

READ ALSO
Как разбить элемент массива строк на массив из его символов?

Как разбить элемент массива строк на массив из его символов?

Есть массивы a и b типа string, где a[1]="hello"; a[2]="woRlD"; a[3]="qejqjekqew"; Массив b изначально пустой

266
C++ atomic runtime error

C++ atomic runtime error

Программа компилируеться, но выводит всегда одно и тоже число, и не выходит корректно

379
Поиск по базе данных с использованием фильтров Qt

Поиск по базе данных с использованием фильтров Qt

В задании сказанно реализовать приложение, которое будет искать в базе данных элементы по заданным параметрамКоличество параметров и их названия...

292
Битовые операции. Разбор xml файла С++

Битовые операции. Разбор xml файла С++

Подскажите, есть файл вида: testxml

265