我想知道我是否可以在一个文件(使用boost的共享内存)中写入char*。我已经创建了一个模板,使用"int“和"string”可以很好地工作,但是使用char*,当我执行程序时,我可以在内存中访问它们,但是数据不会像int和string那样存储在文件中。
代码的代表性部分将是:(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);也许只是因为我不会写指针…我不确定…
提前感谢
发布于 2011-02-02 02:30:47
考虑template<typename T>而不是template<class T> ...但是,除非您必须特别支持char *,否则我会简单地使用std::string。
https://stackoverflow.com/questions/4866367
复制相似问题