Formatierten und unformatierten Eingabe und Ausgabe und streams
Hatte ich seit der Lektüre ein paar Artikel auf einige Websites, die über Formatierte und Unformatierte I/O, aber ich habe meinen Verstand noch mehr Durcheinander jetzt.
Ich weiß, das ist eine sehr grundlegende Frage, aber ich würde bitten, dass jemand geben kann, ein link [ auf eine Seite oder bereits beantwortete Frage auf Stackoverflow ], die erklärt, die Idee der streams in C und C++.
Außerdem würde ich gern wissen, Formatierte und Unformatierte I/O.
InformationsquelleAutor Expert Novice | 2011-08-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Formatierte IO bedeutet, dass Ihr Ausgang ist bestimmt durch einen "format-string", das heißt, Sie bieten einen string mit bestimmter Platzhalter, die Sie zusätzlich geben die Argumente, die verwendet werden soll, füllen Sie diesen Platzhalter:
Den Platzhalter im Beispiel sind
%s
, was darauf hinweist, dass diese ersetzt mit einem string, und%d
, was darauf hinweist, dass dies ersetzt werden durch eine vorzeichenbehaftete integer-Zahl. Es gibt eine Menge mehr Optionen geben Ihnen die Kontrolle darüber, wie die ergebniszeichenfolge wird sich präsentieren. Es ist eine Bequemlichkeit für Sie als Programmierer, denn es entlastet Sie von der Last der Konvertierung der verschiedenen Datentypen in einen string und es zusätzlich entlastet Sie vom string anfügen Operationen überstrcat
oder ähnliches.Unformatierte IO auf der anderen Seite bedeutet, dass Sie einfach schreiben, Zeichen oder byte-Sequenzen zu einem Strom, nicht mit jedem format-string, während Sie tun so.
Das bringt uns zu deiner Frage über streams. Das Allgemeine Konzept hinter "streaming" ist, dass Sie nicht haben, eine Datei zu laden oder was auch immer die Eingabe als ganze die ganze Zeit. Für kleine Daten-das funktioniert zwar, aber Stell dir vor du brauchst zum verarbeiten Terabyte Daten - keine Möglichkeit, diese passen in ein einziges byte-array ohne Ihre Maschine läuft out of memory. Das ist, warum streaming ermöglicht es Ihnen, Daten zu verarbeiten, in kleinere Stücke, ein zu einer Zeit, einer nach dem anderen, so dass zu jeder gegebenen Zeit, die Sie gerade zu tun haben mit einem fix-große Menge von Daten. Sie Lesen die Daten in eine Helfer-variable über und über wieder und Prozess, bis die zugrunde liegenden stream erzählt Sie, dass Sie fertig sind und es keine Daten mehr übrig.
Das gleiche funktioniert auch auf der output-Seite, Sie schreiben Ihre Ausgabe Schritt für Schritt, Stück für Stück, sondern schreiben die ganze Sache auf einmal.
Dieses Konzept bringt andere nette features, auch. Da kann man nest-streams in Bächen in den Bächen, können Sie bauen eine ganze Kette von Transformationen, wo jeder stream kann ändern die Daten, bis Sie schließlich erhalten Sie das Endergebnis, nicht zu wissen, über die einzelnen Transformationen, da behandeln Sie Ihren Strom, als gäbe es nur eine.
Dies kann sehr nützlich sein, beispielsweise C-oder C++ - streams Puffern die Daten, die Sie Lesen, die nativ von z.B. einer Datei zu vermeiden Sie unnötige Anrufe und zum Lesen der Daten in optimierte Brocken, so dass die gesamte Leistung wird viel besser, als wenn Sie direkt aus dem Datei-system.
InformationsquelleAutor emboss
Den standard nicht zu definieren, was diese Begriffe bedeuten, es sagt nur, welche definierten Funktionen in der standard formatiert sind IO und welche nicht. Es stellt einige Anforderungen an die Implementierung dieser Funktionen.
Formatierter IO ist einfach das IO erfolgt über die
<<
und>>
Betreiber. Sie sind gedacht, um verwendet werden, mit text-Darstellung der Daten, Sie beinhalten eine Analyse, die Analyse und Konvertierung der Daten gelesen oder geschrieben werden. Formatierte Eingabe überspringt Leerzeichen:Unformatierte IO liest und schreibt die Daten nur als eine Folge von 'Zeichen' (mit möglicherweise die Anwendung der
codecvt
von der durchdrungen locale). Es soll zum Lesen und schreiben von binären Daten, oder als low-level-formatiert für IO-Implementierung. Unformatierte Eingabe nicht skip whitespace:Und ermöglicht das abrufen der Anzahl von Zeichen Lesen, die von der letzten Eingabe-Bedienung mit
gcount()
:InformationsquelleAutor ybungalobill
Unformatierte ein-und Ausgabe die einfachste form von Eingabe/Ausgabe. Unformatierte Eingabe/Ausgabe überträgt die interne binäre Darstellung der Daten direkt zwischen Speicher und die Datei aus. Formatierte Ausgabe wandelt die interne binäre Darstellung der Daten in ASCII-Zeichen, die in die Ausgabedatei geschrieben. Formatierte Eingabe liest Zeichen aus der Eingabe-Datei und wandelt Sie in die interne form. Formatiert
InformationsquelleAutor ABHILASH