⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nreplace.cpp

📁 linux下的任天堂模拟器代码。供大家参考。
💻 CPP
字号:
/*Copyright (C) 2005-2007 Nach, grinvader ( http://www.zsnes.com )This program is free software; you can redistribute it and/ormodify it under the terms of the GNU General Public Licenseversion 2 as published by the Free Software Foundation.This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with this program; if not, write to the Free SoftwareFoundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.*//*This is part of a toolkit used to assist in ZSNES developmentThis program is able to replace one list of data with another in multiple files.Multiline replace is of course supported.*/#include <iostream>#include <fstream>#include <string>using namespace std;#include "fileutil.h"string SearchText, ReplaceText;void help(){  cout << "Usage: nreplace [-r] <search file> <replace file> <file 1 to modify> <file 2 to modify> ...\n" << endl;  exit(1);}void readin_file(istream& stream, string& buffer){  char byte;  for (;;)  {    stream.get(byte);    if (!stream.eof())    {      buffer += byte;    }    else    {      break;    }  }}void handle_file(const char *filename, struct stat& stat_buffer){  fstream ModifyFile(filename, ios::in | ios::out);  if (ModifyFile)  {    string ModifyText;    readin_file(ModifyFile, ModifyText);    bool changed = false;    for (size_t start_pos = 0;;)    {      size_t match_point = ModifyText.find(SearchText, start_pos);      if (match_point != string::npos)      {        ModifyText.replace(match_point, SearchText.size(), ReplaceText);        start_pos += ReplaceText.size();        changed = true;      }      else      {        break;      }    }    if (changed)    {      ModifyFile.clear();      ModifyFile.seekp(0, ios::beg);      ModifyFile.write(ModifyText.data(), ModifyText.size());      truncate(filename, ModifyText.size());    }    ModifyFile.close();  }  else  {    cout << "Could not open " << filename << endl;  }}int main(size_t argc, const char **argv){  bool subdir_scan = false;  const char **argp = argv+1;  if (*argp && !strcmp(*argp, "-r"))  {    if (argc < 5) { help(); }    subdir_scan = true;    argp++;  }  else if (argc < 4)  {    help();  }  ifstream SearchFile(*argp, ios::in);  if (SearchFile)  {    argp++;  }  else  {    cout << "Could not open " << *argp << endl;    return(2);  }  ifstream ReplaceFile(*argp, ios::in);  if (ReplaceFile)  {    argp++;  }  else  {    cout << "Could not open " << *argp << endl;    return(2);  }  readin_file(SearchFile, SearchText); SearchFile.close();  readin_file(ReplaceFile, ReplaceText); ReplaceFile.close();  if (subdir_scan)  {    for (; *argp; argp++)    {      if (!parse_path(*argp, handle_file))      {        cout << "Could not open " << *argp << endl;      }    }  }  else  {    struct stat stat_buffer; //Not used    for (; *argp; argp++)    {      handle_file(*argp, stat_buffer);    }  }  return(0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -