ifstream Crypto:: fichier_in(char c){ if(fichier_in(c)){
#include <iostream> #include <string> #include <fstream> #include <sstream> #include <limits> class Crypto { public: Crypto(const std::string& str, int key); void Chiffrer(); void Dechiffrer(); std::string String() const; private: std::string _str; const int _key; }; Crypto::Crypto(const std::string& str, int key) : _str(str), _key(key) { } void Crypto::Chiffrer() { for (unsigned int i = 0; i < _str.length(); ++i) { _str[i] += _key; } } void Crypto::Dechiffrer() { for (unsigned int i = 0; i < _str.length(); ++i) { _str[i] -= _key; } } std::string Crypto::String() const { return _str; } std::string fileToString(const std::ifstream& in) { std::stringstream buffer; buffer << in.rdbuf(); return buffer.str(); } void flushCin() { std::cin.clear(); std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); } int main() { std::string filename; std::cout << "Quel est le nom de l'adresse ou se trouve le fichier ?" << std::endl; std::getline(std::cin, filename); std::ifstream file(filename); if (!file) { std::cerr << "Fichier non trouvé: " << filename << std::endl; return 1; } int key; std::cout << "Quel est le key number ?" << std::endl; std::cin >> key; Crypto crypto(fileToString(file), key); int action; std::cout << "1) Chiffrer\n" "2) Dechiffrer\n" << std::endl; std::cin >> action; switch (action) { case 1: crypto.Chiffrer(); break; case 2: crypto.Dechiffrer(); break; default: std::cout << "Action inconnue, la chaine ne sera pas modifiee" << std::endl; } std::string outfile; std::cout << "Quel est le nom de l'adresse ou ecrire le fichier ?" << std::endl; flushCin(); std::getline(std::cin, outfile); std::ofstream out(outfile); if (!out) { std::cerr << "Impssible d'ecrire dans: " << outfile << std::endl; return 1; } out << crypto.String(); return 0; }
Mon programme plante lorsque je le lance...ne sers pas à résoudre ton problème.
#include <iostream> #include <string> #include <fstream> #include <sstream> #include <limits> class Crypto { public: Crypto(const std::string& str, int key); void Chiffrer(); void Dechiffrer(); void LireMessage(); std::string String() const; private: std::string c; const int x; }; Crypto::Crypto(const std::string& str, int key) : c(str), x(key) { } void Crypto::Chiffrer() { for (unsigned int i = 0; i < c.length(); i++) { c[i] += x; } } void Crypto::Dechiffrer() { for (unsigned int i = 0; i < c.length(); i++) { c[i] -= x; } } std::string Crypto::String() const { return c; } std::string fileToString(const std::ifstream& in) { std::stringstream buffer; buffer << in.rdbuf(); return buffer.str(); } void flushCin() { std::cin.clear(); std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); } void Crypto::LireMessage() { for (unsigned i = 0; i < c.length(); i++) { std::cout << c[i]; } } int main() { std::string filename; std::cout << "Quel est le nom de l'adresse ou se trouve le fichier ?" << std::endl; std::getline(std::cin, filename); std::ifstream file(filename); if (!file) { std::cerr << "Fichier non trouvé: " << filename << std::endl; return 1; } int key; std::cout << "Quel est le key number ?" << std::endl; std::cin >> key; Crypto crypto(fileToString(file), key); int action; std::cout << "1) Chiffrer\n" "2) Dechiffrer\n" << std::endl; std::cin >> action; int action2; std::cout << "Voudrez vous lire le fichier dans lequel le programme sera ecrit?\n" "1) Oui\n" "2) Non\n" << std::endl; std::cin >> action2; switch (action) { case 1: crypto.Chiffrer(); break; case 2: crypto.Dechiffrer(); break; default: std::cout << "Action inconnue, la chaine ne sera pas modifiee" << std::endl; } std::string outfile; std::cout << "Quel est le nom de l'adresse ou ecrire le fichier ?" << std::endl; flushCin(); std::getline(std::cin, outfile); std::ofstream out(outfile); if (!out) { std::cerr << "Impssible d'ecrire dans: " << outfile << std::endl; return 1; } out << crypto.String(); switch (action2) { case 1: crypto.LireMessage(); break; case 2: std::cout << "Vous avez choisi de ne pas lire le fichier qui sera ecrit" << std::endl; break; default: std::cout << "Action inconnue, le fichier ne sera pas lu" << std::endl; } getchar(); return 0; }
Crypto::Crypto(const std::string& str, int key) { _str = str; _key = key; // si _key est "const", cette ligne ne fonctionnera pas }
Crypto::Crypto(const std::string& str, int key) : _str(str), _key(key) // fonctionne même si _key est const { }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question