readln() returns new line charater

Jeroen Bollen jbinero at gmail.com
Tue Dec 31 05:09:34 PST 2013


On Monday, 30 December 2013 at 02:59:23 UTC, Marco Leise wrote:
> Am Sun, 29 Dec 2013 22:03:14 +0000
> schrieb "Jeroen Bollen" <jbinero at gmail.com>:
>
>> On Sunday, 29 December 2013 at 18:13:30 UTC, Jakob Ovrum wrote:
>> > On Sunday, 29 December 2013 at 17:25:39 UTC, Jeroen Bollen 
>> > wrote:
>> >> Wouldn't byline return an empty string if the inputstream 
>> >> is exhausted but not closed?
>> >
>> > No, both `readln` and `byLine` will block until either EOL 
>> > or EOF. They differ in their handling of EOF - `readln` 
>> > returns an empty string, while the result of `byLine` 
>> > reports empty (it is a range) and calling `front` is an 
>> > error.
>> 
>> But wouldn't that mean I'd still end up making my char[] 
>> mutable, as I still need to manually remove the last 
>> character, AFTER I checked it's not empty?
>
> No, strings have immutable characters, but there is nothing
> wrong with using only part of it as an array slice:
>
>   string s = readln();
>   s = s[0 .. $-1];
>
> (just to illustrate)
I'm not talking about string though, I know you can resize a 
string, as it's an alias for immutable(char)[], but an immutable 
string would be immutable(immutable(char)[]), which is an 
immutable(charr[]). A mutable string would be immutable(char)[] 
which is the problem! Why does it need to be mutable if it won't 
ever change anyway!


More information about the Digitalmars-d mailing list