namespace cpp

C++ lernen, kennen, anwenden

Benutzer-Werkzeuge

Webseiten-Werkzeuge


howto:text_by_line

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

howto:text_by_line [2013-10-17 12:18] (aktuell)
Zeile 1: Zeile 1:
 +====== Text-Datei zeilenweise oder wortweise einlesen ======
 +===== zeilenweise =====
 +Benutze ''<​fstream>''​ und ''​std::​getline(file,​ line)''​ mit ''<​string>''​ zum zeilenweisen Lesen:
 +<code cpp 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;
 +}
 +</​code>​
 +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:
 +<code cpp>
 +  std::string word;
 +  while (input >> word)
 +  {
 +    // ...
 +  }
 +</​code>​
 +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 (Externe Bearbeitung)