getting started with std.csv

yazd via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Apr 6 22:51:32 PDT 2015


On Tuesday, 7 April 2015 at 05:49:48 UTC, yazd wrote:
> I got this to work with:
>
> ```
> import std.stdio, std.file, std.csv, std.range;
>
> void main()
> {
> 	std.file.write("test.csv", "0,1,abc\n2,3,def");
> 	scope(exit) std.file.remove("test.csv");
>
> 	static struct Rec { int a, b; char[] c; }
>
> 	auto file = File("test.csv", "r");
> 	foreach (s; csvReader!Rec(file.byLine().joiner("\n")))
> 	{
> 		writeln("struct -> ", s);
> 	}
> }
> ```
>
> I am not sure about using `file.byLine()` here, because 
> `byLine` reuses its buffer, but this is working correctly (for 
> some reason, anyone can comment?) as far as I tested.

Btw, joiner is a lazy algorithm. In other words, it doesn't join 
the whole file when it is called but only when needed. This 
reduces the memory requirements as you won't need the whole file 
in memory at once.


More information about the Digitalmars-d-learn mailing list