reading in text files
Johannes Pfau
spam at example.com
Wed Aug 24 07:25:18 PDT 2011
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.
--
Johannes Pfau
More information about the Digitalmars-d-learn
mailing list