Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
August 21, 2017 std.format expand "%s" | ||||
---|---|---|---|---|
| ||||
I'm playing around with std.format and I'm trying to figure out if there is any way to identify what "%s" should expand to. So for instance: int x = 1; auto result = x.format!"%s"; I would know that result="1". I could run "1" through unformatValue and get back 1. I'm looking to see if there is a way to get back "%d": really a function would be like f(x, "%s") produces "%d". Is there anything like that in std.format? |
August 21, 2017 Re: std.format expand "%s" | ||||
---|---|---|---|---|
| ||||
Posted in reply to jmh530 | On 8/20/17 9:52 PM, jmh530 wrote:
> I'm playing around with std.format and I'm trying to figure out if there is any way to identify what "%s" should expand to.
>
> So for instance:
> int x = 1;
> auto result = x.format!"%s";
>
> I would know that result="1". I could run "1" through unformatValue and get back 1. I'm looking to see if there is a way to get back "%d": really a function would be like f(x, "%s") produces "%d".
>
> Is there anything like that in std.format?
Well, for most things, %s does not do the same thing as another specifier. It's only integers, which format the same as %d, and floating points, which format the same as %g.
For all others, the format is specified as %s.
I think what you really want is just isFloatingPoint or isIntegral.
-Steve
|
August 21, 2017 Re: std.format expand "%s" | ||||
---|---|---|---|---|
| ||||
Posted in reply to Steven Schveighoffer | On Monday, 21 August 2017 at 13:57:01 UTC, Steven Schveighoffer wrote:
>
> Well, for most things, %s does not do the same thing as another specifier. It's only integers, which format the same as %d, and floating points, which format the same as %g.
>
> For all others, the format is specified as %s.
>
> I think what you really want is just isFloatingPoint or isIntegral.
>
> -Steve
I'm pretty sure that isFloatingPoint/isIntegral is not what I need, but I'm also not sure if what I was asking for above is needed either. So I'll just drop it for now.
|
August 21, 2017 Re: std.format expand "%s" | ||||
---|---|---|---|---|
| ||||
Posted in reply to jmh530 | On 8/21/17 10:58 AM, jmh530 wrote:
> On Monday, 21 August 2017 at 13:57:01 UTC, Steven Schveighoffer wrote:
>>
>> Well, for most things, %s does not do the same thing as another specifier. It's only integers, which format the same as %d, and floating points, which format the same as %g.
>>
>> For all others, the format is specified as %s.
>>
>> I think what you really want is just isFloatingPoint or isIntegral.
>
> I'm pretty sure that isFloatingPoint/isIntegral is not what I need, but I'm also not sure if what I was asking for above is needed either. So I'll just drop it for now.
What I mean is that %s goes to %d for isIntegral!(typeof(x)), and %s goes to %g for isFloatingPoint!(typeof(x)), and stays as %s for everything else.
Given this, you could probably write the function you were looking for.
-Steve
|
August 22, 2017 Re: std.format expand "%s" | ||||
---|---|---|---|---|
| ||||
Posted in reply to Steven Schveighoffer | On Monday, 21 August 2017 at 15:39:04 UTC, Steven Schveighoffer wrote:
>
> What I mean is that %s goes to %d for isIntegral!(typeof(x)), and %s goes to %g for isFloatingPoint!(typeof(x)), and stays as %s for everything else.
>
> Given this, you could probably write the function you were looking for.
>
> -Steve
I realized I was more interested in the length of the result than the type.
|
Copyright © 1999-2021 by the D Language Foundation