a function like writeln that returns a string rather than writes to a file

dan dan.hitt at gmail.com
Sat May 2 17:09:02 UTC 2020


On Saturday, 2 May 2020 at 10:36:47 UTC, Ali Çehreli wrote:
> On 5/1/20 7:40 PM, dan wrote:> On Saturday, 2 May 2020 at 
> 02:29:43 UTC, H. S. Teoh wrote:
> >> On Sat, May 02, 2020 at 02:22:42AM +0000, dan via
> Digitalmars-d-learn
> >> wrote:
> >>> I'm looking for a function something like writeln or write,
> but
> >>> instead of writing to stdout, it writes to a string and
> returns the
> >>> string.
> >> [...]
> >>
> >>     import std.format : format;
> >>     string str = format("%s %s %s", obj1, obj2, obj3);
> >>
> >>
> >> T
> >
> > Thanks HS!
> >
> > That looks like a good move, if format will do the string
> conversion for
> > me.
> >
> > But one thing that would be troublesome is that i would have
> to make
> > sure to count up the %s so that they match the number of
> arguments.  I
> > would like to do without that, just like writeln does.
>
> If you can live with a mildly awkward way of passing it, 
> format() can take the format string at compile time as well:
>
>   string str = format!"%s %s %s"(obj1, obj2, obj3);
>
> You get a compilation error if format specifications don't 
> match the arguments. (There are bug reports about that check 
> but it mostly works great.)
>
> Ali

Thanks Ali.

That's also a good point, and would remove one of my qualms about 
all of the %s reps.

So if for any reason i cannot use the text function (or if i want 
to double check on the types of the objects) this would be a good 
thing to use.

dan


More information about the Digitalmars-d-learn mailing list