namespace cpp

C++ lernen, kennen, anwenden

Benutzer-Werkzeuge

Webseiten-Werkzeuge


howto:text_by_line

Text-Datei zeilenweise oder wortweise einlesen

zeilenweise

Benutze <fstream> und std::getline(file, line) mit <string> zum zeilenweisen Lesen:

textfile.cpp
//: textfile.cpp: Text zeilenweise lesen - R.Richter 2011-05-22
///////////////////////////////////////////////////////////////
 
#include <iostream>
#include <fstream>
#include <string>
 
int main()
{
  std::string filename;
  std::cout << "Datei: ";
  std::cin >> filename;
 
  std::ifstream input(filename);
 
  if (!input)
  {
    std::cerr << "Datei beim Oeffnen der Datei " << filename << "\n";
    return 1;
  }
 
  std::string line;
 
  while (std::getline(input, line))
  {
     std::cout << line << '\n';
  }  
  return 0;
}

Der Zeilenumbruch landet nicht in der Zeichenkette line.

wortweise

Als "Wort" gilt jede Folge von Zeichen außer Leerzeichen, Tabulator und Zeilenumbruch (Leerraum = white space). Zum wortweisen Lesen bindet man den operator>> in die Schleifenbedingung ein. Vorangehender Leerraum wird dabei verschluckt. Konnte kein Wort gelesen werden, endet die Schleife:

  std::string word;
  while (input >> word)
  {
    // ...
  }

Die meisten Versuche, input.eof() in der Schleifenbedingung zu nutzen, funktionieren nicht. Überlege, was passiert, wenn Leerzeichen am Ende des Eingabestroms stehen?

howto/text_by_line.txt · Zuletzt geändert: 2013-10-17 12:18 von rrichter