reading in text files

Brian Brady brian.brady1982 at gmail.com
Wed Aug 24 07:37:24 PDT 2011


== Quote from Johannes Pfau (spam at example.com)'s article
> Brian Brady wrote:
> >All
> >
> >I am working through Andrei Alexandrescus "The D Programming Language"
> >but have hit a road block fairly early on.
> >
> >There is a program in the book which is designed to read through a
> >text file and do a simple word count. The program looks like this:
> >
> >import std.stdio, std.string;
> >
> >void main()
> >{
> >  //Compute counts
> >  uint[string] freqs;
> >  foreach(line; stdin.byLine())
> >  {
> >    foreach(word; split(strip(line)))
> >    {
> >      ++freqs[word.idup];
> >    }
> >  }
> >
> >  //Prints count
> >  foreach(key, value; freqs)
> >  {
> >    writefln("%6u\t%s", value, key);
> >  }
> >}
> >
> >My query is basically how to read the text file in?
> >
> >currently I am trying to use
> >./readingHamlet cat hamlet.txt
> >
> >but it just hangs there, not doing anything(for a considerable time)
> >so I am assuming I am doing something wrong. There isn't any actual
> >mention in the book of *how* reading in the text file should be
> >accomplished, so what is the best way to do this?
> >
> >std.file?
> >
> >Seems silly providing a program that analyses a text file, without
> >telling the reader how to read in the text file, so I am wondering if
> >there is some assumed knowledge I am missing?
> >
> >Regards.
> Hi,
> stdin.byLine() reads from the standard input, which is your
> console/keyboard input by default. The default stdin doesn't have an
> end, and unless you type something in, there's no input at all. That's
> why the program just hangs.
> On Linux/unix you can for example pipe the output from one command to
> another:
> cat hamlet.txt | ./readingHamlet
> this way readingHamlet's standard input is connected to cat's standard
> output.

This worked!! As I assumed, it was something simple :S

Thank you so much.


More information about the Digitalmars-d-learn mailing list