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