我有這樣的代碼:我應該在這裏使用什麼類型的演員?
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