如何读取和写入字符串和结构的映射到文件

时间:2017-03-23 16:40:44

标签: c++ c++11 boost boost-serialization boost-regex

我尝试完成的任务是一组字符串,必须将其存储到std::set中,然后将其保存到一个文件中,并为每个set分配一个编号。 我设法通过下面的代码使用一些boost函数

来完成它
void WriteToFile()
{
   std::set<std::string> ptotoList = {"John", "Kelly", "Amanda", "Kim"};
   std::set<std::string> etotoList = {"Jo", "Ke", "Am", "Ki"};
   const std::string solMsg = SerializeCutoverListMsg (ptotoList,etotoList);
   std::string msgToBeSaved = 1 + ":" + solMsg;
   std::ofstream outStream (FileName.string().c_str());
   outStream << boost::algorithm::join(msgsToBeSaved, "\n") << endl;

}

string SerializeCutoverListMsg(const std::set& pList, const const std::set&  eList)
{
   return boost::algorithm::join(eList, ",") + ";" + boost::algorithm::join(pList, ",");
}

使用此功能,我生成的输出类似于下面,我将其保存在文件中,我为每个set分配了一个编号

  1:John,Kelly,Amanda,Kim;Jo,Ke,Am,Ki

要读取相同的数据我使用下面的代码

 void ReadFromFile()
 {
 std::ifstream wssmAssetListFile(someFilename.c_str());
 string msgLine;
 while ( getline (wssmAssetListFile, msgLine) )
   {
        boost::algorithm::split_regex( result, msgLine, boost::regex( ":" ) ) ;   
         const string& groupId = result[0];
        ---------
   }
 }

现在,属于set的数据已更改为map,而且必须读取和写入的数据如下所示

struct test
{
  string a;
  string b;
}
void WriteToFile()
{
  std::map<int, test> eList,pList ;
  eList["John"] = {"dummy", "dummy1"};
  pList["Jo"] = {"dummy", "dummy1"};
   and so on...
}

}

我需要帮助如何编写如下的数据并像上面的set

一样阅读
  

1:John {&#34; dummy&#34;,&#34; dummy1&#34;},Kelly {&#34; dummy&#34;,&#34; dummy1&#34;},Amanda {& #34; dummy&#34;,&#34; dummy1&#34;},Kim {&#34; dummy&#34;,&#34; dummy1&#34;}; Jo {&#34; dummy&#34;, &#34; dummy1&#34;},Ke {&#34; dummy&#34;,&#34; dummy1&#34;},Am {&#34; dummy&#34;,&#34; dummy1&#34; },Ki {&#34; dummy&#34;,&#34; dummy1&#34;}

最初我们有set个字符串,但现在每个字符串都包含一个结构,因此我必须使用map,因为set中的每个值都有相应的值

感谢您对此的帮助

0 个答案:

没有答案