Lesen Sie die Daten der Textdatei

In C++, istream& operator>> can be used to read data "as in text". What is the equivalent in D?

Mein Versuch:

input.txt

c 1033
90.432

input_test.d

import std.stdio;
import std.stream;

void main()
{
    auto inputFile = new BufferedFile("input.txt");
    char c;
    int i;
    double d;

    inputFile.read(c);
    inputFile.read(i);
    inputFile.read(d);
    writeln(c, '\t', i, '\t', d);
}

Ausgabe

c   858796320   4.90559e-62
1
hinzugefügt bearbeitet
Ansichten: 1
Übrigens, ich denke, was dieser Code macht, wird in char, int und double in binärer Form gelesen. Das heißt, der erste Lesevorgang erhält ein Byte, der zweite Lesevorgang 4 Byte und die letzten 8 und interpretiert jede Bitsequenz als den zugehörigen Typ.
hinzugefügt der Autor BCS, Quelle

1 Antworten

D hat viele Möglichkeiten, Daten aus Dateien zu lesen, um verschiedene Anwendungsfälle zu vereinfachen. Hier sind einige:

Abhängig von Ihrem speziellen Fall werden Sie wahrscheinlich slurp oder readf . Ihre andere Option besteht darin, Zeilen zu lesen und sie in die gewünschten Felder aufzuteilen. Verwenden Sie dann std.conv.to, um die Textdarstellung zu analysieren:

double d = to!double(somestring);

Zusammenfassend, wenn jede Zeile das gleiche Format hat, ist Schlürfen der beste Weg. Andernfalls müssen Sie entscheiden, was für Sie am bequemsten ist.

4
hinzugefügt
Die Ausgabe ist nicht was ich will. Die int und double sind falsch. Zurück zu Ihren Vorschlägen, nehme ich an, dass ich byLine verwende. Ich sollte dann splitter und die std.conv Dienstprogramme verwenden?
hinzugefügt der Autor catfish_deluxe_call_me_cd, Quelle
Ich habe readf ausprobiert, aber etwas ist schief gelaufen (auch ich bin neu in der Formatsyntax). Danke für den slurp Vorschlag, von dem ich nichts wusste.
hinzugefügt der Autor catfish_deluxe_call_me_cd, Quelle
Ich habe meine Antwort aktualisiert. Ich mag es, viel zu schlürfen, aber wenn das Format Zeile für Zeile variiert, müssen Sie wahrscheinlich die Teile manuell teilen und konvertieren.
hinzugefügt der Autor Justin W, Quelle