[英]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.