On 03/04/2012 11:43 AM, maarten van damme wrote:
> hello,
> I wrote this little test:
> import std.stdio;
>
> void main(){
> auto testfile=new File("test.txt");

That is a pointer but lines() takes a File. Either construct testfile like this:

    auto testfile = File("test.txt");

or use lines(*testfile) in the foreach loop.

>   foreach(string line;lines(testfile))
> writeln(line);
> }
> and get as error
> src\main.d(6): Error: constructor std.stdio.lines.this (File f, dchar
> terminator = cast(dchar)'\x0a') is not callable using argument types (File*)
> src\main.d(6): Error: cannot implicitly convert expression (testfile) of
> type File* to File
>
> Why?
> I've also noticed the argument to lines in the example was a stream but now
> it claims to be a File. when I feed it a File it complains it is given a
> *File... what am I doing wrong?
>

Just a reminder that "If line has type char[], wchar[], dchar[], the line's con­tent will be reused (over­writ­ten) across reads.":

  http://dlang.org/phobos/std_stdio.html#lines

Ali

Reply via email to