byBassing toString (specifically for strings)

monarch_dodra monarchdodra at gmail.com
Thu Feb 28 02:42:43 PST 2013


strings follow a special rule for printing: Basically, if you 
print a string, it gets pretty printed. However, if it becomes a 
part of a struct, or an array, or any container in general, it 
becomes printed as a type. EG:

//----
string s = "hello\tworld";
writeln(s); //raw string
writeln([s]);

//----
will print:
hello   world
["hello\tworld"]

My question is: Is there any way to print the string as a type 
(second example), in a simple fashion? The only way I found is to 
place it in an array, and then print it using a printf special 
syntax to strip the []:

writefln("%(%s%)", (&s)[0 .. 1]);
"hello\tworld"

It works, but it is ugly as fuck, and cryptic as hell. Is there 
any simple format flag that gets the job done simply? There has 
to be something, since writefln is obviously able to do it, but I 
can't seem to plug into it dirrectly...


More information about the Digitalmars-d-learn mailing list