【问题标题】:issues using stringstream to handle binary file使用 stringstream 处理二进制文件的问题
【发布时间】:2013-09-06 14:46:58
【问题描述】:

我正在处理一个需要从中获取有用内容的二进制文件。结构是:

【问题讨论】:

  • 感觉stringstream 不太适合处理二进制文件。
  • 其实一点也不。
  • 问题不在于stringstream(尽管我在这里看不到它有任何实际用途);问题是他试图在二进制数据上使用格式化的 IO。没有办法,因为格式都是面向文本的。
  • 不清楚实际输入的样子。什么是二进制,什么是文本?而如果大部分文件是二进制的,则null为0,这是一个有效的二进制值。
  • @JamesKanze 同意了。如果没有对输入文件格式的更好更好的定义,这首先有点模糊。

标签: c++ binary fstream stringstream


【解决方案1】:

根据对文件的快速浏览,您在任何地方都没有“未知数量的空值”。格式似乎是:

N Bytes: number of animals, integer as text delimited by '\n'
24 Bytes per animal:
    16 Bytes: name of animal padded with 0
    4 Bytes: some 32 bit number (little endian)
    4 Bytes: another 32 bit number (little endian)

您不应该将其作为文本文件阅读,而应作为原始二进制文件阅读。绝对不需要字符串流,您可以通过一次读取一个字节并添加到前一个值 * 10 直到达到 '\n' 来简单地解析动物的数量。

【讨论】:

    猜你喜欢
    • 2013-10-01
    • 1970-01-01
    • 2015-09-11
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-05
    相关资源
    最近更新 更多