how to get line number after readln

Ali Çehreli via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Jun 4 17:33:26 PDT 2014


On 06/04/2014 05:05 PM, Robert Hathaway wrote:
> I've got a program that reads a text file line by line (using std.stdio
> readln())

Consider using byLine() instead. (Important: byLine uses an internal 
buffer for the line; so, don't forget to make a copy if you want to 
store the line for later use.)

 > and I'd like to refer to the line number when I send a message
> to stderr upon finding a mis-formatted line.  Is there a way to get the
> current line number?  Of course, I could create a counter and increment
> it with each call to readln, but is there a "cool" way of doing this?
>
> Okay, call me lazy... just don't call me late for dinner! :-)
>
> Robert

One cool way is a zipped sequence:

import std.stdio;
import std.range;

void main()
{
     foreach (i, line; zip(sequence!"n", File("deneme.txt").byLine)) {
         writefln("%s: %s", i, line);
     }
}

Ali



More information about the Digitalmars-d-learn mailing list