还有相关的文件解压文件MD5码生成和比较就不说了,都是用了网上的源码。但是MD5码生成有一个要说的地方就是文件需要用二进制方式打开才能和C#中所计算出的MD5码相同,否则就是以文本方式打开的,算出来的是不一样的。

ifstream in(fileName.c_str(), ios::binary);

    接下来就是xml文件的解析了,用的是tinyxml的源码。

void FileDownload::dump_to_stdout(TiXmlNode* pParent)
{
      if (!pParent) return;
      TiXmlNode* pChild;
      /*根据自己的xml文件格式解析*/  
//const TiXmlString str= pParent->ValueTStr();
//TiXmlElement* pXmlElement = pParent->ToElement();
   //string strAttrib = pXmlElement->Attribute("name");
for (pChild = pParent->FirstChild(); pChild != 0; pChild = pChild->NextSibling()) { dump_to_stdout(pChild); } }

      这里注意循环递归的时候一定是pChild = pChild->NextSibling(),我之前直接pChild->NextSibling()结果就死循环了,打了断点才发现一直在解析第一句。

      写mfc版的时候花了很多时间,但是要来写博客却发现没什么好写的地方,值得一说的就是用c++写的话很多东西都需要自己来实现,比如解析字符串的话就不像C#中直接有利用分隔符就能解析出数组给你,还能有dictionary用,不过c++中的vector和dictionary类似,而mfc中的cstring的功能相对于string也要齐全一点,有CStringArray可以用。

      还有比较重要的一点就是数据类型之间的转换,还有之前遇到过的一个问题就是打开外部exe的时候,如果传入的命令行参数是直接的“D://.exe"这种字符串的话是可以启动的,但是如果string s=“D://.exe",传入s为函数的参数,这样程序不会报错但是无法启动,这也是之前所说过的不能识别string的问题。