Разница между 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*)
безопаснее или нет. Если у вас достаточно знаний, вы можете сообщить мне об этой теме?ПРИМЕЧАНИЕ: Если у вас есть идея получше, пожалуйста, помогите мне, чтобы я мог улучшить свой вопрос?