gpt4 book ai didi

C++ 解析 istream::tellg 警告

转载 作者:可可西里 更新时间:2023-11-01 15:52:25 25 4
gpt4 key购买 nike

警告:

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

最佳答案

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

为了避免潜在的数据丢失,请使用更大的类型或...简单地让您的变量为 streamoff 类型。

关于C++ 解析 istream::tellg 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15172315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com