On Thursday, 21 June 2012 at 20:30:07 UTC, Jens Mueller wrote:

>auto file = File(filename, "r");
>auto records = csvReader!(Record)(file.byLine());
>
>Am I missing something? Was this left out for a reason or an >oversight?
>
>Jens

You might make use of std.algorithm.joiner.

The problem is that csvParser expects a range with elements of type
dchar. Any idea why that is required for CSV parsing?

Jens

It requires a dchar range so that Unicode support is enforced. It is the same reason char[] is a range of dchar.

You'll have to give me some example code, my test has no issue using joiner with byLine.

import std.stdio;
import std.algorithm;
import std.csv;

void main()
{
    struct Record {
        string one, two, three;
    }
    auto filename = "file.csv";
    auto file = File(filename, "r");
    auto records = csvReader!Record(file.byLine().joiner("\n"));
    foreach(r; records)
    {
        writeln(r);
    }
}

Reply via email to