当前位置: 首页>>代码示例>>C++>>正文


C++ buf_t::reserve方法代码示例

本文整理汇总了C++中buf_t::reserve方法的典型用法代码示例。如果您正苦于以下问题:C++ buf_t::reserve方法的具体用法?C++ buf_t::reserve怎么用?C++ buf_t::reserve使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在buf_t的用法示例。


在下文中一共展示了buf_t::reserve方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: entry

TarHeader::EntryType UnTar::entry(buf_t& buf, int accepted_types, bool skip_apple_resource_forks)
{
    do {

        m_header.reset();
        read(*m_header, TarHeader::HeaderLen);
        m_header.analyze();

        // this is the only valid exit condition from reading a tar archive - end header reached
        if (m_header.is_end()) return TarHeader::Unknown;

        if (m_header.type() == TarHeader::File) {

            // make sure we reserve space for at least one more character than the file size
            // (to cheaply add a 0 byte if the user wants to)
            buf.reserve(m_header.filesize() + 1);

            // resize the buffer to be able to read the file size
            buf.resize(m_header.filesize());

            // read the file into the buffer
            read(&buf[0], m_header.filesize());

            // check if we have to skip some padding bytes (tar files have a block size of 512)
            size_t padding = (TarHeader::HeaderLen - (m_header.filesize() % TarHeader::HeaderLen)) % TarHeader::HeaderLen;

            if (padding) {
                // this invalidates the (raw) header, but it is a handy buffer to read up to 512 bytes into here
                read(*m_header, padding);
            }

        }

    } while ((m_header.type() & accepted_types) == 0 || (skip_apple_resource_forks && CDDB::begins_with(m_header.filename(), ("./._"))));

    return m_header.type();
}
开发者ID:JoachimSchurig,项目名称:CppCDDB,代码行数:37,代码来源:untar.cpp

示例2: write_internal

void write_internal(VALUE self, VALUE handle, VALUE obj, VALUE type, buf_t& buf) {
  Model& model = MODEL(handle);
  Msg& msg = get_msg_for_type(model, type);
  buf.reserve(MSG_INITIAL_CAPACITY);
  msg.write(buf, msg, obj);
}
开发者ID:wintonpc,项目名称:pbr,代码行数:6,代码来源:pbr_ext.cpp


注:本文中的buf_t::reserve方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。