二进制文件中的字符串替换



(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)


如果使用C++写一段内存的替换,只使用简单的比较或是memcpy等操作,来实现替换一个文件中的内容,写起来还是有点麻烦的:


首先要把文件内容读取到字符串中,然后从文件的开头字符进行比较,直到匹配上字符后,基于查找到的问题,替换内容,然后再回写到文件。


不过在QT中就比较简单了,使用QByteArray的封装方法,可以用很少的代码实现,比我最初想的要简单多了。


下面是一个二进制文件的内容替换例子:


实现把二进制文本中的某段字符修改为另外一段。


   void replaceBinFile(QString sBinFile, QString sFrom, QString sTo)

   {

       QFile file(sBinFile);

       if (file.open(QIODevice::ReadWrite) && sFrom.length() > 0)

       {

           // 替换操作

           file.seek(0);

           QByteArray bytes = file.readAll();

           bytes.replace(sFrom, sTo.toUtf8());

 

           // 回写到二进制文件

           file.seek(0);

           file.write(bytes);           

       }

       file.close();

   }


注意:如果替换目录的话,注意采用的是 ‘\\’字符,还是'/'字符

 



 (Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)


你可能感兴趣的:(C++,Qt)