On Thursday, 3 June 2021 at 00:39:04 UTC, vacuum_tube wrote:
I've been trying to make a struct for CSV parsing and manipulating. The code was as follows:
```
struct CSVData(bool HeaderFromFirstLine)
{
        char[][] header = [];
        char[][][] rest = [];

        this(string filename)
        {
                auto tmp = File(filename).byLine();
                
                if(HeaderFromFirstLine)
                {
                        this.header = CSVData.parseCSV(tmp.front()).array;
                        tmp.popFront();
                }

                this.rest = tmp.map!(e => parseCSV(e)).array;
        }
```
[...]
The "testdata" text file looked like this:
```
10,15,Hello world
stuff,,more stuff
```
And the output from running it looked like this:
```
["st", "ff", ",more stuff"]
["stuff", "", "more stuff"]

`File.byLine` overwrites the previous line's data every time it reads a new line. If you want to store each line's data for later use, you need to use [`byLineCopy`][1] instead.

[1]: https://phobos.dpldocs.info/std.stdio.File.byLineCopy.1.html

Reply via email to