我怎么知道我是在阅读二进制文件还是文本文件

时间:2016-04-16 20:48:17

标签: c++

我的程序有不同的选项:你可以读取二进制文件或文本文件,但是你可以选择二进制文件选项并选择一个文本文件...我怎样才能检测到你引入了一个不正确的文件#39;这样做

while(fich.read((char *)&struct,sizeof(struct)))

1 个答案:

答案 0 :(得分:2)

  

如何在我执行此操作时检测到您引入了错误的文件

简单的答案是:你做不到。

无法区分普通(例如ASCII编码)文本文件和二进制文件。

从文件中读取的任何介绍性字节序列都可能对两者都有效。

这个问题的愚蠢但常见的解决方案是:

  • 为您的文件名提供一个暗示特定格式的扩展名
  • 让你的文件在开头有一个魔术字节序列(1-2个字节)并暗示一个特定的格式