#include <fstream> #include <iostream> #include <string>
using namespace std;
string getData(string filename) throw(std::ifstream::failure) { std::ifstream streamReader(filename, std::ios::binary); if (!streamReader.is_open()) throw std::ifstream::failure("file couldn't open"); streamReader.seekg(0, std::ios::end); unsigned filesize = streamReader.tellg(); char *_data = new char[filesize]; streamReader.seekg(0, std::ios::beg); streamReader.read(_data, filesize); streamReader.close(); string data(_data); delete[] _data; return std::move(data); }
std::string &replaceAll(std::string &context, const std::string &from, const std::string &to) { size_t lookHere = 0; size_t foundHere; while ((foundHere = context.find(from, lookHere)) != string::npos) { context.replace(foundHere, from.size(), to); lookHere = foundHere + to.size(); #ifdef SHOWREPLACE cout << "stringNumber:" << foundHere << endl; #endif } return context; }
int main(int argc, char const *argv[]) { if (argc < 4) return -1; try { string data = getData(argv[1]); string from(argv[2]); string to(argv[3]); replaceAll(data, from, to); cout << "The replace start:" << endl; cout << data << endl << "the replace end" << endl; } catch (const std::exception &e) { std::cerr << e.what() << '\n'; } return 0; }
|