tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
1400
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    blong1550 Tutorials.de Gastzugang
    Hallo,

    ich habe folgende Aufgabe bekommen.

    string readFile (string filename): Diese Funktion liest die Datei vom Namen
    filename ein, speichert den Inhalt als String ab und gibt diesen zur¨uck.

    vorgegeben haben wir eine text.txt.

    Meine Funktion sind bisher so aus:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    string readFile (string filename)
    {
        string inhalt;
        ifstream quelle;
        quelle.open(filename.c_str());
            if (!quelle)
            {
                cerr << filename << " kann nicht geöffnet werden!\n";
                exit(-1);
            }
     
     
            char ch;
            while (quelle.get(ch))
            {
                cout << ch;
     
            }

    Das Problem ist, es funktioniert bei der langen Textdatei nicht mehr und außerdem speichert er es ja nicht in einem String.
    Nun tue ich mich etwas schwer und weiß nicht wie ich die komplette textdatei als string speichere?


    Grüße
     

  2. #2
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.358
    Blog-Einträge
    4
    Vllt. führen zu große Textdateien zu einem Pufferüberlauf?

    Du kannst auch gleich den ganzen Inhalt lesen mit dem Operater >>:

    Code :
    1
    2
    3
    
    ifstream f('text.txt');
    string S;
    f >> S;

    Habe jetzt ohne Fehler-Überprüfung gemacht. Müsste aber klappen!
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  3. #3
    blong1550 Tutorials.de Gastzugang
    mh ne das funktioniert nicht

    initializing argument 1 of `std::basic_ifstream<_CharT, _Traits>::basic_ifstream(const char*, std::_Ios_Openmode) [with _CharT = char, _Traits = std::char_traits<char>]'
    invalid conversion from `int' to `const char*'


    Keine Ahnung was da lost ist.
     

  4. #4
    blong1550 Tutorials.de Gastzugang
    habs jetzt selbst geschafft. ich weiß nicht ob es nicht noch kürzer geht aber so geht es wenigstens -.-

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    string readFile (string filename)
    {
        string zeile,inhalt ;
        ifstream quelle;
        quelle.open(filename.c_str());
        if (!quelle)
        {
            cerr << filename << " kann nicht geöffnet werden!\n";
            exit(-1);
        }
     
        while (!quelle.eof())
        {
            getline(quelle,zeile);
            inhalt = inhalt + zeile;
        }
     
        return inhalt;
     
    }
     

  5. #5
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.
    Zitat Zitat von ComFreek Beitrag anzeigen
    Vllt. führen zu große Textdateien zu einem Pufferüberlauf?

    Du kannst auch gleich den ganzen Inhalt lesen mit dem Operater >>:
    Der >> Operator liest aber nur ein Wort ein (also bis zum nächsten Leerzeichen).
    Zitat Zitat von blong1550 Beitrag anzeigen
    mh ne das funktioniert nicht

    initializing argument 1 of `std::basic_ifstream<_CharT, _Traits>::basic_ifstream(const char*, std::_Ios_Openmode) [with _CharT = char, _Traits = std::char_traits<char>]'
    invalid conversion from `int' to `const char*'

    Keine Ahnung was da lost ist.
    ComFreek hat fälschlicherweise statt doppelten Anführungszeichen einfache Anführungszeichen verwendet.

    Um eine Datei komplett einzulesen:
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    string readFile (const string& filename)
    {
      ifstream quelle(filename.c_str());
     
      if (quelle.is_open()) {
        stringbuf buffer;
        
        if (quelle >> &buffer) {
          return buffer.str();
        } else {
          // I/O Fehler
        }
      } else {
        // Datei existiert nicht oder kein Zugriff möglich
      }
    }
    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

Ähnliche Themen

  1. Textdatei auslesen und speichern
    Von awortmeier im Forum Java Grundlagen
    Antworten: 7
    Letzter Beitrag: 23.12.10, 08:31
  2. [C] String in eine Textdatei speichern.
    Von Zumlin im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 13.12.06, 12:34
  3. String in Textdatei speichern
    Von JackBauer8283 im Forum Java
    Antworten: 2
    Letzter Beitrag: 12.12.06, 17:30
  4. Antworten: 2
    Letzter Beitrag: 20.08.05, 17:30
  5. Antworten: 10
    Letzter Beitrag: 16.05.04, 23:11