namespace cpp {}

C++ lernen, kennen, anwenden

Benutzer-Werkzeuge

Webseiten-Werkzeuge


howto:text_by_line
no way to compare when less than two revisions

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.


Letzte Überarbeitung
howto:text_by_line [2013-10-17 12:18] – angelegt - Externe Bearbeitung 127.0.0.1
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: 2022-12-18 12:35 von rrichter

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki