Sum informations in file....
Ali Çehreli via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Mon Nov 24 11:40:05 PST 2014
On 11/24/2014 11:04 AM, Suliman wrote:
> I can't understand why foreach loop produce every line by line, while
> it's fuctional analog print lines on one string:
>
> foreach(f; file.byLine())
> {
> writeln(f);
f is a char[] and writeln prints all strings as their contents i.e.
"first string" is printed as
first string
> }
>
> auto file = File("foo.txt","r");
> file
> .byLine()
> .writeln;
In that case the first three lines make a range object. By default,
writeln prints ranges as if they are arrays. For this example, the range
is a range of strings, so it prints it as
[ "first string" ]
writefln gives us more power:
auto content = File("foo.txt","r").byLine();
writefln("%-(%s\n%)", content);
Per-element formatting is specified within %( and %). So, each element
would be printed with "%s\n" format. Notes:
1) The dash in %-( means "do not print the double-quotes for strings"
2) Everything after %s in the per-element formatting is taken as element
delimiter and writefln does not print the delimiters are not printed for
the last element. One may need to use %| to specify the actual delimiters.
Here is the spec:
http://dlang.org/phobos/std_format.html#.formattedWrite
Here is my rewording:
http://ddili.org/ders/d.en/formatted_output.html
Ali
More information about the Digitalmars-d-learn
mailing list