Hi all, I have what is I suspect a silly question, but I am having a total brainfart over this for some reason. I want to read an arbitrary amount of floats from user input and then perform some statistics work on them. For some reason, I can't figure out how to get it to recognise when the user has stopped entering values. My current code is:
void main(string[] args) { Stat[] stats; foreach (arg; args[1 .. $]) { auto newStat = cast(Stat) Object.factory("main." ~ arg); enforce(newStat, "Invalid statistics function: " ~ arg); stats ~= newStat; } for (double x; stdin.readf(" %s ", &x) == 1; ) { foreach (s; stats) { s.accumulate(x); } } foreach (s; stats) { s.postprocess(); writeln(s.result()); } } At the moment it just crashes with a conversion error when invoked, for example, with: echo 3 1.6 17 | stats Min Average I know my problem is the readf, but what would best practice be for this situation?