我想知道我是否可以在文件中写入(带有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);
也许只是我不能写指针......我不确定......
提前致谢
答案 0 :(得分:1)
而不是template<class T>
考虑template<typename T>
...但我会简单地使用std::string
,除非您必须专门支持char *
。