Einen Text in eine Datei speichern -AUfgabe -



  • Hallo ..
    kann mir bitte jemand helfen um diese Aufgabe zu lösen
    ich kome nicht klar was ich machen soll !!

    ""(Ein Unternehmen vertreibt verschiedene Getränke. Oft stellen Kunden Fragen
    zu den Produkten. Damit die E-Mail mit den Fragen an den richtigen Mitarbeiter gelangt, soll ein Programm erkennen, um welche Produktsorte es geht und
    einen Text in eine Datei speichern. Das von Ihnen zu entwerfende Programm
    soll also in einem Text (einzulesen aus einer Datei, Dateiname wird abgefragt)
    Schlagworte (siehe Tabelle) suchen und je nach Ergebnis folgenden Text generieren und speichern:

    Hi <name>, du hast eine neue Nachricht zum Thema <buzzword>.

    buzzwordname ---name--- outputfile
    Kaffee ------------------Paul---- new_mail_to_Paul.txt
    Bohnen -----------------Paul---- new_mail_to_Paul.txt
    Saft----------------------- Phil ----new_mail_to_Phil.txt
    Wasser------------------ Phil---- new_mail_to_Phil.txt



  • @peter00
    Du sollst Hi Paul, du hast eine neue Nachricht zum Thema Kaffee. in die Datei new_mail_to_Paul.txt schreiben. Usw.

    Die Worte und Dateinamen musst du einlesen.



  • @manni66
    aha ok also die datei new_mail_to_Paul.txt sollte vorhanden ?

    so ist?

    fstream file;
    file.open("new_mail_to_Paul.txt ",ios::out | ios::app)
    file>>"Hi Paul, du hast eine neue Nachricht zum Thema Kaffee"
    file.close();



  • @peter00 sagte in Einen Text in eine Datei speichern -AUfgabe -:

    @manni66
    aha ok also die datei new_mail_to_Paul.txt sollte vorhanden ?

    Nein, warum?

    so ist?

    fstream file;
    file.open("new_mail_to_Paul.txt ",ios::out | ios::app)
    file>>"Hi Paul, du hast eine neue Nachricht zum Thema Kaffee"
    file.close();

    Dein Compiler sollte dazu eine Meinung haben.

    Benutze ofstream, wenn du schreiben willst.



  • @manni66
    aha okay also so lautet den Code :

    ofstream file;
    ofile.open("new_mail_to_Paul.txt ")
    file>>"Hi Paul, du hast eine neue Nachricht zum Thema Kaffee"
    file.close();



  • @peter00
    Nein. Benutze deinen Compiler!



  • @peter00 Was hast Du in der Vorlesung gemacht?

    #include <cstdlib>
    #include <stdexcept>
    #include <utility>
    #include <vector>
    #include <string>
    #include <sstream>
    #include <fstream>
    #include <iostream>
    
    int main()
    {
    	std::vector<std::pair<std::string, std::string>> buzzword_employee_map {
    		{ "Kaffee",  "Paul" },
    		{ "Bohnen",  "Paul" },
    		{ "Saft",    "Phil" },
    		{ "Wasser",  "Phil" }
    	};
    
    	auto output_filename_prefix{ "new_mail_to_ " };
    	auto output_filename_postfix{ ".txt" };
    	auto mail_greeting{ "Hi" };
    	auto mail_body{ "du hast eine neue Nachricht zum Thema " };
    
    	try {
    		std::cout << "Filename?\n";
    		std::string input_filename;
    		if (!(std::cin >> input_filename))
    			throw std::runtime_error{ "Input error" };
    			
    		std::ifstream is{ input_filename };
    		if (!is.is_open())
    			throw std::runtime_error{ "File couldn't be opened for reading" };
    	
    		std::string text(std::istreambuf_iterator<char>(is), {});
    		std::string buzzword;
    		std::string employee;
    		for (auto pair : buzzword_employee_map) {
    			std::cout << pair.first << '\n';
    			if (text.find(pair.first) != text.npos) {
    				buzzword = pair.first;
    				employee = pair.second;
    				break;
    			}
    		}
    
    		if (!buzzword.length()) {
    			std::cout << "No Buzzword found.\n\n";
    			return EXIT_SUCCESS;
    		}
    
    		std::stringstream output_filename;
    		output_filename << output_filename_prefix << employee << output_filename_postfix;
    
    		std::ofstream os{ output_filename.str() };
    		if (!os.is_open())
    			throw std::runtime_error{ "File couldn't be opened for writing" };
    		
    		os << mail_greeting << ' ' << employee << ",\n" << mail_body << buzzword << ".\n";
    	}
    	catch (std::runtime_error & e) {
    		std::cerr << e.what() << " :(\n\n";
    		return EXIT_FAILURE;
    	}
    	catch (...) {
    		std::cerr << "An unknown error occured :(\n\n";
    		return EXIT_FAILURE;
    	}
    }
    
    

Anmelden zum Antworten