On Thursday, 7 August 2014 at 15:11:48 UTC, TJB wrote:
I am trying to read data in from a csv file into a struct, and then turn around and write that data to binary format.

Here is my code:

import std.algorithm;
import std.csv;
import stdio = std.stdio;
import std.stream;

align(1) struct QuotesBin
{
  int qtim;9   int bid;
  int ofr;
  int bidsiz;
  int ofrsiz;
  short mode;
  char[1] ex;
  char[4] mmid;
}

void main()
{
  string infile = "temp.csv";
  string outfile = "temp.bin";
  Stream fin = new BufferedFile(infile);
  Stream fout = new BufferedFile(outfile, FileMode.Out);

  foreach(ulong n, char[] line; fin)
  {
    auto record = csvReader!QuotesBin(line).front;
    fout.writeExact(&record, QuotesBin.sizeof);
  }

  fin.close();
  fout.close();
}

Here is a snippet of my csv data:

34220, 370000, 371200, 1, 1, 12, N,
34220, 369000, 372500, 1, 11, 12, P,
34220, 370000, 371200, 1, 2, 12, N,
34220, 370000, 371100, 1, 33, 12, N,
34220, 369400, 371100, 6, 3, 12, P,
34220, 370000, 371200, 1, 2, 12, N,
34220, 369300, 371200, 9, 2, 12, N,
34220, 369300, 371200, 5, 2, 12, N,
34220, 368900, 371200, 13, 2, 12, N,
34220, 368900, 371100, 13, 1, 12, N,

For some reason this fails miserably. Can anyone help me out as to why? What do I need to do differently?

Thanks,
TJB

Some of the code got messed up when I pasted.  Should be:

align(1) struct QuotesBin
{
  int qtim;
  int bid;
  int ofr;
  int bidsiz;
  int ofrsiz;
  short mode;
  char[1] ex;
  char[4] mmid;
}

Thanks!

Reply via email to