【问题标题】:Read uint32_t values from file从文件中读取 uint32_t 值
【发布时间】:2014-06-18 14:06:20
【问题描述】:

我想使用下面的代码从文件中读取 uint32_t 整数。 ifstream 只接受指向 char 数组的指针。是否有另一种方法可以使用类似于下面的代码来读取 uint32_t 值?

int readCount;
uint32_t buffer[SIZE];
while ( fin.read( &buffer[0], SIZE)
        || (readCount = fin.gcount()) != 0 ) {
    // some code
}

【问题讨论】:

    标签: c++ file-io input io


    【解决方案1】:

    使用演员表,例如:

    if (fin.read(reinterpret_cast<char *>(buffer), sizeof buffer) &&
        fin.gcount() == sizeof buffer)
    {
        // use buf
    }
    

    (明确允许将任何对象解释为字符数组,正是出于 I/O 的目的。)

    【讨论】:

    • 它给了我错误:来自 uint32_t 的静态转换无效
    • @Bob:是的,抱歉,应该是reinterpret_cast
    • @Bob:如果你最终得到部分读取,就像你在代码中指出的那样,你必须自己进行除法,以确定你可以读取多少个整数......
    • 如果 gcount 小于缓冲区大小,从缓冲区(最后一个块)读取 gcount() 元素是否足够?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-24
    • 2014-02-20
    • 1970-01-01
    • 2012-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多