D / I / O функции - PullRequest
       16

D / I / O функции

7 голосов
/ 16 сентября 2010

Я только учусь D. Выглядит как отличный язык, но я не могу найти никакой информации о функциях файлового ввода-вывода. Я могу быть смутным (я хорош в этом!), Поэтому кто-нибудь может указать мне правильное направление, пожалуйста? Спасибо

Ответы [ 4 ]

10 голосов
/ 16 сентября 2010

В основном, вы используете структуру File из std.stdio.

import std.stdio;

void writeTest() {
    auto f = File("1.txt", "w");        // create a file for writing,
    scope(exit) f.close();              //   and close the file when we're done.
                                        //   (optional)
    f.writeln("foo");                   // write 2 lines of text to it.
    f.writeln("bar");
}

void readTest() {
    auto f = File("1.txt");             // open file for reading,
    scope(exit) f.close();              //   and close the file when we're done.
                                        //   (optional)
    foreach (str; f.byLine)             // read every line in the file,
      writeln(":: ", str);              //   and print it out.
}

void main() {
   writeTest();
   readTest();
}
3 голосов
/ 16 сентября 2010

Сведения о файлах (атрибуты файла, чтение / запись файла за один раз) см. В std.file. Для вещей, которые обобщаются на стандартные потоки (stdin, stdout, stderr), посмотрите в std.stdio. Вы можете использовать std.stdio.File как для файлов на физическом диске, так и для стандартных потоков. Не используйте std.stream, так как это запланировано для устаревания и не работает с диапазонами (D эквивалентно итераторам).

3 голосов
/ 16 сентября 2010

А как насчет модуля std.stdio?

0 голосов
/ 24 сентября 2010

Лично я нахожу файловый ввод / вывод в стиле C благоприятным.Я считаю, что это один из наиболее понятных способов ввода / вывода, особенно если вы работаете с двоичными файлами.Даже в C ++ я не использую потоки, кроме дополнительной безопасности, это просто неуклюже (как и я предпочитаю printf, а не потоки, отлично, что у D есть безопасный для печати printf!)

...