我有这样的代码:我应该在这里使用什么类型的演员?
m_file.seekg(0, std::ios_base::end);
int fileSize = (int)(m_file.tellg());
m_file.seekg(0, std::ios_base::beg);
m_fileContent.resize(fileSize);
m_file.read(m_fileContent.data(), fileSize);
的想法是一个二进制文件的内容读入一个载体。此代码已编译并运行良好,但我不确定此行在C++环境中是否正确?
int fileSize = (int)(m_file.tellg());
我是否使用正确的演员?这是一个C风格的演员,而不是一个C++。我想这施放,但它产生编译器错误:
int fileSize = reinterpret_cast<int>(m_file.tellg());
,但我收到此错误:
'reinterpret_cast' : cannot convert from 'std::fpos<_Mbstatet>' to 'int'
什么是投值类型彼此最好的方法是什么?我应该使用C风格演员还是C++风格演员?
你不应该在这里所有铸造。如果'tellg'返回的值不适合'int'会怎么样? –
通常,您可以使用'static_cast'进行显式数值转换。 'reinterpret_cast'在指针和引用上工作,做假冒他们指向/指向不同类型的更危险的工作。但是你不应该在这里使用剧组。 –
相关:[streampos和pos_type,streamoff和off_type之间有什么区别?](http://stackoverflow.com/q/10133680/2718186) – MicroVirus