Ctrl-Z in windows and byLine()

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Wed Oct 12 09:28:02 PDT 2011


Got this from a reader:

=======================
I'm testing on Windows the code below, based on your errata changes for
p8, print 1.  It works ok if on console I enter some characters, but if I
terminate console input with ctrl-z, then there is an error exit of the
program.  So, does this code need some exception handler to handle the
immediate end of input from console?
Thanks,
Jay Norwood

void dict1_4()
{
	size_t[string] dict; // see errata use size_t
	foreach (line; stdin.byLine()){
		foreach (word; splitter(strip(line))){ // see errata required 
std.algorithm
			if (word in dict) continue;
			auto newID = dict.length;
			dict[word.idup] = newID; // see errata required idup
			writeln(newID, '\t', word);
		}
	}

}
=======================

I thought Ctrl-Z simply sends EOF to the reader, so this should work. 
What is byLine() doing wrong?


Thanks,

Andrei


More information about the Digitalmars-d mailing list