【问题标题】:C++ memset - Extract size bytes and copy them to the supplied data address from bufferC ++ memset - 提取大小字节并将它们从缓冲区复制到提供的数据地址
【发布时间】:2013-05-09 17:57:01
【问题描述】:

有没有办法从 char 指针设置起始位置,它是内存中的一个文件。

我需要从流中读取数据的提取大小字节,并将它们复制到提供的数据地址并返回读取的字节数。 这是我的 memset 试用,我尝试使用内存中的文件进行 fread 之类的操作。 希望可以有人帮帮我。

typedef signed   long long Int64; // osx for example

Int64 FileStream::read(void* data, Int64 size)
{
  // make sure, that size was not > as filename
  Int64 wanted_buffer = currentposition + size;
  if (wanted_buffer > memfile->GetSize())
    size = memfile->GetSize() - currentposition;

  // tryout with memcpy
  memcpy(data, currentposition + memfile->GetBuffer(), size);
  currentposition += size;    

  // like
  // return std::fread(data, 1, static_cast<std::size_t>(size), m_file);

  return currentposition;
}

【问题讨论】:

    标签: c++ binary char memset


    【解决方案1】:

    如果您能够使用 c FILE 结构,您可以在 FILE * 上使用 fseek

    【讨论】:

    • 是的,但这正是我不想做的。该文件完全在内存中。我试过 fread 哪个有效。现在我尝试使用 memset,但我找不到任何文档来获取“开始位置后的字节数”。
    • 将您的void * 转换为char * 并为其添加一个数字。这会将您的指针在内存中移动一定数量的字节。如果这不是您需要的,请尝试以不同的方式编写您的问题;令人困惑。
    猜你喜欢
    • 2013-03-26
    • 2016-05-02
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-17
    相关资源
    最近更新 更多