В доках сказано, что file_size возвращает результат в байтах. Имеются в виду октеты (8 бит) или количество char
-ов?
Имеются ввиду именно байты. Поэтому, байты это sizeof(char)
. А вот будет байт 8 бит или нет - это детали конкретного компилятора/операционной системы (да, на большинстве ОС, которые Вы встретите, байт будет 8 бит).
Если же хочется странного, то всегда можно почитать, что пишут здесь https://isocpp.org/wiki/faq/intrinsic-types
И если после этого все ещё хочется, то делаем так. Подключаем нужные заголовки
#include <climits>
И потом появляется макрос CHAR_BIT
, который содержит кол-во бит в байте на конкретной системе. Теперь дело за малым
your_size*CHAR_BIT/8
да, вдруг может оказаться, что там байт на 8 бит не делится (12 бит на байт), но тут уже самостоятельно решайте, то делать и как (вещественная арифметика в помощь). Но для 99% людей ответ 1.5 байта будет дивным
В той же документации написано:
sizeof(char)
, sizeof(char8_t)
, sizeof(signed char)
, sizeof(unsigned char)
, and sizeof(std::byte)
are always equal to 1
Известно, что sizeof
возвращает размер обьекта/типа в байтах. Значит, char
и есть один байт. Ну а сколько в байте битов зависит от архитектуры компьютера.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab