C / C++ if(dateiA == dateib)!

@Redwing:
als Funktionprototyp vom Compiler interpretiert.
Wo du das erwähnst: Mir fällt ein, dass ich genau dazu was bei Scott Meyers gelesen habe, in "Effective STL". Muss noch mal nachsehen, was es damit genau auf sich hatte.

---
Edit:

Aha, Item 6, Seite 35. Ist mir jetzt zu knifflig zu erklären. :)
Aber das sollte gehen laut Meyers (muss ich noch testen):
Code:
  std::ifstream file( "Test.txt" );
  std::string text( (std::istream_iterator<char>(file)), std::istream_iterator<char>() );
Man beachte die Klammern um den ersten Parameter des Konstruktors.

---
Edit:
@ Beichtpfarrer:
Jo, ifstream öffnet standardmäßig im Text-Translated-Modus. D.h. CarryReturn-LineFeed-Paare werden durch ein einzelnes LineFeed ersetzt.
Schlag mal bitte was vor, was man dagegen machen kann.
 
Zuletzt bearbeitet:
Ist eigentlich ganz einfach:
Im Konstruktor des ifstreams (bzw in der open-Anweisung) wird übergeben in welchem Mode die Datei geöffnet werden soll. Open und ein Konstruktor sind so definiert:
open(const char* __s, ios_base::openmode __mode)
Bei openmode muss ios_base::binary angegeben werden, um einen Binary-Stream zu erhalten.
siehe auch die msdn zu dem Thema.

@RedWing:
Du wirst es kaum glauben, aber du hast mich schon fast davon überzeugt, dass es manchmal doch besser ist, die STL usw zu benutzen :)
Ich hätte das nie erkannt, wenn ich nicht gerade was machen würde, in dem ich mir dadurch eine Menge Code ersparen kann.
Aber normalerweise finde ich, mit Klassen wie istream habe ich zu wenig Kontrolle über den gewünschten Vorgang. Denn in ihrer Funktion sind sie doch stark auf ein Thema reduziert. (Oder kann ich mit ifstream binär -also keine strings- einlesen? Wenn ja, dann sag mir wie, dann würde ich es wahrscheinlich auch wieder benutzen.)

edit: ..irgendwie hab ich zuerst den falschen Link gepostet ;)
 
Zuletzt bearbeitet:
Ach klar, natürlich. Danke für die Erinnerung! :)

Oder kann ich mit ifstream binär -also keine strings- einlesen
Klar kannst du das, zum Beispiel mit istream::get(). Das hat etliche Überladungen und liest binär.
Code:
#include <fstream>
int main()
{
  std::ifstream is( "test.txt" );
  char c = 0;
  while ( is.good() )
  {
    is.get( c );
    std::cout << c;
  }
Übrigens lässt sich auch einstellen, was die Stream als Whitespace ansehen sollen. Habe nur gerade nicht parat, wie es geht.
 
Zurück