Program:
import std.stdio;
void main() {
string s = "ταυ";
foreach(i, elem; s) {
writefln("%s %s '%s'", i, cast(int)elem, elem);
writefln("%s", elem);
}
}
Output:
0 207 '�'
1 132 '�'
τ
2 206 '�'
3 177 '�'
α
4 207 '�'
5 133 '�'
υ
How does the second writefln know about the context and can adequately output a character on every other iteration?
However, if you do it this way (see below), the output is very strange with arbitrary line breaks.
foreach(i, elem; s) {
writefln("'%s', %s", elem, elem);
}
Output:
'�',
�'�', �
'�',
�'�', �
'�',
�'�', �