Разница между static_cast <char *> и (char *)

это мой первый вопрос :)

У меня есть один файл стопки, и я открыл его, как показано ниже;

ifstream in ( filename,  ios :: binary | ios :: in ) 

Затем я хотел бы хранить 2-байтовые данные в беззнаковом удержании int;

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*) безопаснее или нет. Если у вас достаточно знаний, вы можете сообщить мне об этой теме?

ПРИМЕЧАНИЕ: Если у вас есть идея получше, пожалуйста, помогите мне, чтобы я мог улучшить свой вопрос?

Ответы на вопрос(5)

Ваш ответ на вопрос