Text Read Write in CPP

Aus LOMSO
Zur Navigation springen Zur Suche springen
Du bist hier : {{#youAreHere:Text Read Write in CPP}}



Lesen und Schreiben von Text Files mit C++

Man muss oft kleine Files lesen und schreiben. Z.B. XML, Konfigurationen, Scripte usw.

Das kann mit C++ auf eine Zeile reduziert werden.

#include "rList.h"
list<string> text;
text = tReadAscii().( "filenameIn" );
count = tWriteAscii()(text,"filenameOut");

oder

#include "rList.h"
string textAsString;
textAsString = tReadAscii().to_string("filenameIn"); 

Weitere Beispiele sind in main.cpp.

Der Text ist ein Container vom Typ std::list<std::string>. Beim Lesen wird eine Kopie der Liste zurückgegeben, beim Schreiben wird eine const Referenz der Liste benötigt.

Mit to_string( const std::string& file ) kann 'on the fly' eine Konvertierung nach std::string erfolgen.

Das gleiche Verfahren ist auch für binary Files implementiert. In diesem Fall sind die Daten in einem Container von Typ std::vector<uint8_t>

Das Lesen erfolgt in operator() und nicht im Konstruktor. Dort wird auch die Exception geworfen, wenn etwas schief geht.

Download: github: asciireadwrite2

Lizenz der Files

LGPL: GNU Lesser General Public License


Files

Der Projektfile für Qt-Creator:

asciireadwrite2.pro

Testfile und Testprogramm:

  • readascii.txt
  • main.cpp

Implementierung:

  • rList.h
  • wList.h
  • rBin.h
  • wBin.h

Exceptions:

class text_read::BadAsciiRead: public std::runtime_error
class text_write::BadAsciiWrite: public std::runtime_error
class bin_read::BadBinRead: public std::runtime_error
class bin_write::BadBinWrite: public std::runtime_error

Compiler

Es wird Standard C++ mit Boost eingesetzt, daher ist der Code von allen modernen C++ Compilern übersetzbar.

Boost Filesystem Library