我不知道这是否可能,但是有没有一种方法可以检索一个文件的前4个字节(最有可能是BOM),以便获得它的编码类型(UTF-8,UTF-16LE,CP1252,等等)。然后,如果所选文件是以UTF-8编码的,则在数组"tabBytes[]“中找到的值将类似于:
tabBytes[0] = 0xEF
tabBytes[1] = 0xBB
tabBytes[2] = 0xBF
tabBytes[3] = XXXX感谢您抽出时间来帮助我!我期待着阅读您对此的评论和答案。
编辑:我是C++的新手,所以我之前写的代码可能是错误的,所以我把它删除了。
最后编辑:我终于找到了问题的解决方案,感谢那些帮助我的人!
发布于 2015-01-22 05:27:40
数组索引从0开始,所以您使用buffer[fourBytes] = '\0';写过了缓冲区的末尾。如果你想这样做,你需要分配fourBytes + 1字节。这应该会阻止在删除缓冲区时发生的崩溃。
然而,像这样空终止缓冲区的唯一原因是,如果您想要将其视为C样式字符串(例如,将其打印出来),而您似乎并没有这样做。您正在将其复制到tabBytes中,但是您正在而不是复制空终止符。所以还不清楚你到底想要实现什么。
从文件中读取前几个字节的总体逻辑很好。尽管基于上面的代码,但您可以直接将数据读取到tabBytes中,并取消buffer的分配/复制/释放。
https://stackoverflow.com/questions/28077059
复制相似问题