/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* main.cpp :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: aortigos #include void replaceAndWrite(std::ifstream &infile, std::ofstream &outfile, const std::string &s1, const std::string &s2) { std::string line; line = ""; while (std::getline(infile, line)) { size_t pos = 0; while ((pos = line.find(s1, pos)) != std::string::npos) { line.erase(pos, s1.length()); line.insert(pos, s2); pos += s2.length(); } outfile << line << std::endl; } } int main(int argc, char **argv) { std::string filename; std::string s1; std::string s2; std::string line; if (argc != 4) { std::cout << "Uso: ./sed " << std::endl; return (1); } filename = argv[1]; s1 = argv[2]; s2 = argv[3]; line = ""; // Comprobamos que s1 no sea un string vacío if (s1.empty()) { std::cout << "s1 no puede estar vacío" << std::endl; return (1); } // Intentamos abrir el input std::ifstream infile(filename.c_str(), std::ifstream::in); if (!infile.is_open()) { std::cout << "Ha ocurrido un error en el infile" << std::endl; return (1); } // Intentamos abrir el output std::ofstream outfile((filename + ".replace").c_str()); if(!outfile.is_open()) { std::cout << "Hubo un error en el outfile" << std::endl; return (1); } // Ejecutamos el bucle para reemplazar replaceAndWrite(infile, outfile, s1, s2); // Cerramos los archivos infile.close(); outfile.close(); return (0); }