string in File schreiben



  • Hi to all,

    mein Problem:

    Ich möchte ein File öffnen: fopen ()
    Dann lese ich verschiedene Strings mit cin >> in mein Programm,

    diese will ich dann in das File schreiben. Wenn es geht irgendwie formatiert!
    und dann fclose ();

    Hoffe ihr könnt mir ein wenig auf die Sprünge helfen !



  • Das ist leider sehr schwer, da Du keine Frage gestellt hast.

    Aber ich versuche mal ein wenig zu raten (wie bei Jeopardy):

    Mit dieser Funktion ist es möglich Texte und Variablen formatiert in einen Standard-C-Stream zu schreiben. (Was ist fprintf?)

    Diese Klassen sind in C++ besser geeignet als C-Streams, um Dateien zu bearbeiten. (Was sind iostreams?)



  • Die Frage:

    Wie mache ich das generell????

    Also in der Art:

    #include <iostream>
    
    using namespace std;
    
    int main (int argc, char* argv[]) {
    
    FILE* Text = fopen ("C:\meineDaten.txt", ??);
    const char* text1, text2, text3;
    
    cin >> text1 >> endl;
    cin >> text2 >> endl;
    cin >> text3 >> endl;
    
    fwrite (???,???, Text);
    fclose (Text);
    
    return 0;
    
    }
    

    So in der ARt. Also wenn text 1 = hallo
    text2 = du
    text3 = tschüss
    sind, dann will ich in meinem txt File:

    hallo 
    du
    tschüss
    

    Also alles in eine neue Zeile. Wie mache ich das ?

    Also wie du siehst eine ganze Menge Fragezeichen!



  • Wie gesagt dafür benutzt man in C++ eigentlich iostreams, weil C-Streams sind ugly (das war meine zweite Jeopardy-Antwort).

    Die erste Jeopardy-Antwort bezog sich auf fprintf (wenn Du unbedingt mit FILE* arbeiten musst 😉 ). fprintf nimmt einen Format-String (mit Platzhaltern, z.B. %s für const char*). Zeilenwechsel kannst Du selbst an jeder Stelle einfügen (\n)

    fprintf(Text, "Erstes Wort: %s\nZweites Wort: %s\nDrittes Wort: %s\n", text1, text2, text3);
    


  • Hi!

    FILE* Text = fopen ("C:\\meineDaten.txt", w);
    
    fwrite (text, strlen( text ), 1, Text);
    

    grüße



  • #include <iostream>
    
    int main (int argc, char* argv[])
    {
    
      std:string text1, text2, text3;
    
      std::cin >> text1
               >> text2
               >> text3;
    
      std::ofstream out("C:\\meineDaten.txt");
      out << text1 << '\n'
          << text2 << '\n'
          << text3 << '\n';
    
      return out ? 0 : 1;
    }
    


  • Muss man dann bei der letzten Lösung nicht auch den Stream mal zumachen????

    Und das unter return verstehe ich nicht!



  • Puppet55 schrieb:

    Muss man dann bei der letzten Lösung nicht auch den Stream mal zumachen????

    Macht der ofstream-Destruktor.

    Puppet55 schrieb:

    Und das unter return verstehe ich nicht!

    Das Programm gibt 0 zurück wenn die Datei erfolgreich geschrieben werden konnte, ansonsten 1.



  • Puppet55 schrieb:

    Muss man dann bei der letzten Lösung nicht auch den Stream mal zumachen????

    Das erledigt der Destruktor, du brauchst also in diesem Fall kein close aufrufen.

    Puppet55 schrieb:

    Und das unter return verstehe ich nicht!

    Anders geschrieben:

    if(out)    // Überprüfung, ob das Schreiben erfolgreich war
        return 0;
    else
        return 1;
    

    siehe auch http://www.pronix.de/pronix-685.html

    /edit: ups, zu spät...



  • Was muss ich denn da noch includieren?



  • fstream



  • und <string>


Anmelden zum Antworten