为什么我们需要使用seekg和tellg来查找文件大小
why do we need to find file size using seekg and tellg
我有一个基本的问题,为什么我们必须使用seekg将指针移动到流的末尾,然后使用tellg将指针移回开头。我知道这是为了找到文件大小,但为什么我们需要文件大小?
int myFileSize;
std::fstream myFile;
myFile.open(myFileName, std::ios::in|std::ios::binary);
if (myFile.is_open())
{
myFile.seekg(0, std::ios::end);
myFileSize = myFile.tellg();
myFile.seekg(0, std::ios::beg);
myFile.close();
}
首先,不能保证您能找到文件大小使用CCD_ 1和CCD_;tellg
的返回类型不是保证可转换为积分类型,即使是可转换的,不能保证数值代表任何真实的东西。这种技术恰好在Unix,在Windows下,如果文件已以二进制文件打开模式对于"文件大小"的某些定义,通常仅如果文件中充满了"C"语言环境。
为什么会这样?原因在于如何定义文件大小在大多数这样的情况下,用户似乎想要char
他可以在遇到文件末尾之前读取。在更多一般上下文中,定义将是文件在磁盘上占用。而且大多数系统都无法至少不直接确定其中的任何一个。在Unix下(在Windows下,如果文件以二进制模式打开)系统报告的文件大小与数字不一致的char
,前提是filestream
不进行代码翻译,或翻译代码一对一。(这对于"C"answers"POSIX"是有保证的地区。)
C++仍然试图支持大多数平台,当然也在尝试以支持大型机。因此,它没有标准化无法在某些平台上实现的功能。C++11引入了"条件支持特征"的概念,然而也许是一个有条件支持的文件的提案大小函数是可以接受的。到目前为止,我还不知道然而,任何提出过这样建议的人。
相关文章:
- 正在查找文档以获得PS4平台的C++中的设备信息
- 在C++中查找文件
- 模板元程序查找相似的连续类型名称
- 在UNIX系统中使用DIR查找文件的字节大小
- 查找最接近的大于当前数字的数字的索引
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 查找后更改类变量
- 使用正则表达式regex_search在字符串中查找字符串
- 使用gcc从静态链接的文件中查找可选符号
- 在C++中查找范围的长度
- 算法问题:查找从堆栈中弹出的所有序列
- 在Windows中查找扬声器输出的当前音量级别
- 如何在C++中使用X509证书模在令牌中查找私钥
- 使用.find函数在c++中查找字符和另一个字符之间的大小
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 在 for 循环中查找问题时遇到困难
- 如何在文件中查找字节序列
- 查找二进制文件的大小,函数 tellg() 返回 -1
- 写入二进制文件的中间;使用tellg()查找长度
- 为什么我们需要使用seekg和tellg来查找文件大小