это мой первый вопрос:)
У меня есть один файл стопки, и я открыл его, как показано ниже;
ifstream in ( filename, ios :: binary | ios :: in )
Тогда я бы хотел хранить 2-байтовые данные в неподписанном int hold;
unsigned int hold;
in . read(static_cast<char *>(&hold), 2);
Мне кажется, это правильно. Однако, когда я компилирую это с
g++ -ansi -pedantic-errors -Werror - -Wall -o main main.cpp
Компилятор выдает ошибку
error: invalid static_cast from type ‘unsigned int*’ to type ‘char*’
На самом деле, я решил эту проблему, изменив static_cast на (char *), то есть
unsigned int hold;
in . read((char*)(&hold), 2);
Мои вопросы:
- В чем разница между
static_cast<char*>
и (char*)
?
- Я не уверен, безопаснее ли использовать
(char*)
. Если у вас достаточно знаний, вы можете сообщить мне об этой теме?
ПРИМЕЧАНИЕ: Если у вас есть идея получше, пожалуйста, помогите мне, чтобы я мог улучшить свой вопрос?