2013-05-09 26 views
1

有沒有辦法從char指針設置起始位置,該指針是內存中的文件。C++ memset - 提取大小字節並將它們複製到從緩衝區提供的數據地址

我需要從流中讀取數據提取大小字節,並將它們複製到提供的數據地址並返回讀取的字節數。 這是我的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; 
} 

回答

1

如果你能使用C FILE結構,你可以在FILE *使用fseek

+0

是的,但這正是我不想做的。該文件完全在內存中。我已經嘗試過它fread哪些工作。現在我用memset嘗試一些東西,但是我找不到任何文檔來獲取「開始位置後的字節」。 – 2013-05-09 18:04:22

+0

將你的'void *'強制轉換爲'char *'並向它添加一個數字。這會將指針移動到內存中的字節數量。如果這不是你所需要的,那就試着寫一下你的問題吧。它很混亂。 – RandyGaul 2013-05-09 18:05:13

+0

你已經得到了:) – 2013-05-09 18:12:00

相關問題