std.file.readText() extra Line Feed character

Colin via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Dec 18 02:16:37 PST 2014


On Thursday, 18 December 2014 at 09:25:47 UTC, ketmar via 
Digitalmars-d-learn wrote:
> On Thu, 18 Dec 2014 09:18:35 +0000
> Colin via Digitalmars-d-learn 
> <digitalmars-d-learn at puremagic.com> wrote:
>
>> Why does std.file.readText() append a Line Feed char onto the 
>> end of the string?
>> 
>> I have a file with the following contents in it:
>> Name   =               Int
>> Other=Float
>> One More = String(Random;)
>> 
>> I then have the code:
>> 
>> void main(string[] args){
>>      const text = "Name   =               Int
>> Other=Float
>> One More = String(Random;)";
>> 
>>      string input = readText(args[1]);
>> 
>>      writefln("Raw data");
>>      writefln("D)    %s", cast(ubyte[])text[$-5..$]);
>>      writefln("File) %s", cast(ubyte[])input[$-5..$]);
>> 
>> }
>> 
>> This produces:
>> Raw data
>> D)    [100, 111, 109, 59, 41]
>> File) [111, 109, 59, 41, 10]
>> 
>> Any Idea why the reading from the File adds on that extra '10' 
>> character?
>> 
>> I don't think it's my editor adding chars to the end of the 
>> file, as I'm using vi.
>
> you *definetely* has the last line ended with '\n'.

I dont see how, I copy and pasted from the string definition in 
D, directly after the first " and directly before the last ".

If I look at the file in vim with line numbers turned on, the 
file is like this. So I really dont think I have a new line in 
the file...

   1 Name   =               Int
   2 Other=Float
   3 One More = String(Random;)


More information about the Digitalmars-d-learn mailing list