Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
September 05, 2017 Problem with std.string.strip(): Can't use result in format routine | ||||
---|---|---|---|---|
| ||||
Hi, I read line from STDIN , and strip them [code] auto line_st = line.strip(); [/code] However, I can't use result in another format routine. Assume my input line is "foobar": [code] writeln("Stripped line is %s", line_st); [/code] This code only prints "Stripped line is ". If I use instead [code] writeln("Stripped line is %s", line.strip()); [/code] the result is "Stripped line is foobar". What're the difference between the two uses? I'm using `dmd v2.075.1`. Thanks a lot. |
September 05, 2017 Re: Problem with std.string.strip(): Can't use result in format routine | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ky-Anh Huynh | On Tuesday, 5 September 2017 at 12:38:54 UTC, Ky-Anh Huynh wrote:
> Hi,
>
> I read line from STDIN , and strip them
>
> [code]
> auto line_st = line.strip();
> [/code]
>
>
> However, I can't use result in another format routine. Assume my input line is "foobar":
>
> [code]
> writeln("Stripped line is %s", line_st);
> [/code]
>
> This code only prints "Stripped line is ". If I use instead
>
> [code]
> writeln("Stripped line is %s", line.strip());
> [/code]
>
> the result is "Stripped line is foobar".
>
> What're the difference between the two uses? I'm using `dmd v2.075.1`.
>
> Thanks a lot.
Maybe it has something to do with how you read from STDIN. Can you show that part of the code to see if I can reproduce the issue ?
|
September 05, 2017 Re: Problem with std.string.strip(): Can't use result in format routine | ||||
---|---|---|---|---|
| ||||
Posted in reply to Azi Hassan | On Tuesday, 5 September 2017 at 13:17:34 UTC, Azi Hassan wrote: > > Maybe it has something to do with how you read from STDIN. Can you show that part of the code to see if I can reproduce the issue ? I used `lines(stdin)` as in https://dlang.org/phobos/std_stdio.html#.lines . My source code is here https://github.com/icy/dusybox/blob/master/src/plotbar/main.d#L47 . Thanks for your support. |
September 05, 2017 Re: Problem with std.string.strip(): Can't use result in format routine | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ky-Anh Huynh | On Tuesday, 5 September 2017 at 13:40:18 UTC, Ky-Anh Huynh wrote:
> On Tuesday, 5 September 2017 at 13:17:34 UTC, Azi Hassan wrote:
>>
>> Maybe it has something to do with how you read from STDIN. Can you show that part of the code to see if I can reproduce the issue ?
>
> I used `lines(stdin)` as in https://dlang.org/phobos/std_stdio.html#.lines . My source code is here
>
> https://github.com/icy/dusybox/blob/master/src/plotbar/main.d#L47 .
>
> Thanks for your support.
I think formattedRead is consuming your string.
Andrea
|
September 05, 2017 Re: Problem with std.string.strip(): Can't use result in format routine | ||||
---|---|---|---|---|
| ||||
Posted in reply to Andrea Fontana | On Tuesday, 5 September 2017 at 13:56:20 UTC, Andrea Fontana wrote:
>> I used `lines(stdin)` as in https://dlang.org/phobos/std_stdio.html#.lines . My source code is here
>>
>> https://github.com/icy/dusybox/blob/master/src/plotbar/main.d#L47 .
>>
>> Thanks for your support.
>
> I think formattedRead is consuming your string.
Great catch. You're right. Thanks a lot.
`strip()` returns a slice. I use another reference variable to save them and it's fine now.
[code]
auto line_st = line.strip();
auto line_st2 = line_st;
....
writefln("Stripped lined is %s", line_st2); // works fine
[/code]
|
Copyright © 1999-2021 by the D Language Foundation