警告:
warning C4244: 'initializing' : conversion from 'std::streamoff' to 'unsigned int', possible loss of data
引起:
unsigned int FileSize = File.tellg( ); // WARNING
std::cout << "Size = " << FileSize << std::endl;
可能的解决方案? 可以这样做:
// No more warnings but, is it safe?
unsigned int FileSize = (unsigned int)File.tellg( ); // OK?
std::cout << "Size = " << FileSize << std::endl;
这个怎么样?
// No more warnings but, is it safe?
unsigned int FileSize = static_cast< unsigned int >( File.tellg( ) );
答案 0 :(得分:13)
streamoff
是由C ++标准库实现定义的有符号整数类型,大小足以满足最大可能的文件大小。例如,在我的x86_64 stdlibc ++中,它是int64_t
。
为了避免潜在的数据丢失,请使用更大的类型或...只需让您的变量属于streamoff
类型。