gpt4 book ai didi

c++ - 在共享内存中复制 char* boost

转载 作者:行者123 更新时间:2023-11-28 08:23:44 25 4
gpt4 key购买 nike

我想知道我是否可以在文件(带 boost 的共享内存)中写入一个 char*。我已经创建了一个模板,并且可以很好地使用“int”和“string”,但是使用 char*,当我执行程序时,我可以在内存中访问它们,但是之后数据并没有存储在文件中使用整数和字符串。

代表性的代码片段是:(T 将是 char*)

//DECLARATIONS
MyMap *mymap;
managed_mapped_file seg = managed_mapped_file(open_or_create, tableName, tablesize);
mymap = seg->find_or_construct<MyMap>("MyMap") //object name
(std::less<T>() //first constructor parameter
,*alloc_inst); //second constructor parameter

//THE METHOD TO ADD THE ENTRIES
template<class T>
void ShareDB<T>::add_ref_info_to_db (const T &Symbol_Index , const std::string &a_info){

MyMap::iterator res = mymap->find(Symbol_Index);

mymap->insert(std::pair<const T, shared_string>(Symbol_Index, localSymbol));

所以我这样调用模板:

ShareDB <char *> ex;
ex.openDB(dataBaseName,"TestMutex", 196608, true);
ex.add_ref_info_to_db (a,ex.RefInfoRecord);

也许只是我不会写指针...我不确定...

提前致谢

最佳答案

而不是 template<class T>考虑 template<typename T> ...但是我会简单地使用 std::string除非你必须支持 char *具体来说。

关于c++ - 在共享内存中复制 char* boost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4866367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com