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?
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 
			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?



More information about the Digitalmars-d mailing list