11

警告:

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( ) );
4

1 回答 1

15

streamoff是由 C++ 标准库实现定义的有符号整数类型,并且足够大以适应最大可能的文件大小。例如,在我的 x86_64 stdlibc++ 中,它是一个int64_t.

为了避免潜在的数据丢失,请使用更大的类型或......只需让您的变量为 type streamoff

于 2013-03-02T08:19:00.277 回答