簡體   English   中英

如何從二進制文件中讀取數據並寫入共享 memory 區域?

[英]How to read data from a binary file and write to a shared memory region?

我使用 boost 創建了一個共享的 memory 區域。 我的下一步是從二進制文件中讀取數據並將其寫入共享的 memory 區域。 我正在使用以下代碼來執行此操作:

#include <fstream>
#include <boost/interprocess/shared_memory_object.hpp>
#include <boost/interprocess/mapped_region.hpp>

using namespace std;
using namespace boost::interprocess;

int main(int argc, char **argv)
{
    ifstream file;
    file.open("sigData.bin", ios::binary | ios::in); // file is of 1mb

    shared_memory_object shm(open_or_create, "shared_memory", read_write);

    shm.truncate(1024 * 1024);

    mapped_region region(shm, read_write);

    unsigned char * mem = static_cast<unsigned char*> (region.get_address());

    file.read(mem, region.get_size());
}

上面的代碼在 file.read() function 上給了我一個錯誤。 錯誤如下:

error: invalid conversion from ‘unsigned char*’ to ‘std::basic_istream<char>::char_type* {aka char*}’ [-fpermissive]

我該如何解決這個問題?

這可以通過將指針從unsigned char*轉換為char*來解決; 這是僅更改指針類型即可的罕見情況之一。

所以,使用

file.read(reinterpret_cast<char*>(mem), region.get_size());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM