file io

rikki cattermole rikki at cattermole.co.nz
Thu Sep 6 17:07:05 UTC 2018


On 07/09/2018 4:17 AM, Arun Chandrasekaran wrote:
> On Thursday, 6 September 2018 at 16:13:42 UTC, hridyansh thakur wrote:
>> how to read a file line by line in D
> 
> std.stdio.File.byLine()
> 
> Refer the doc here: https://dlang.org/library/std/stdio/file.by_line.html
> 
> An example from the doc:
> 
> ```
> import std.algorithm, std.stdio, std.string;
> // Count words in a file using ranges.
> void main()
> {
>      auto file = File("file.txt"); // Open for reading
>      const wordCount = file.byLine()            // Read lines
>                            .map!split           // Split into words
>                            .map!(a => a.length) // Count words per line
>                            .sum();              // Total word count
>      writeln(wordCount);
> }
> ```

Ranges will be far too advanced of a topic to bring up at this stage.

So something a little more conventional might be a better option:

---
import std.file : readText;
import std.array : split;
import std.string : strip;

string text = readText("file.txt");
string[] onlyWords = text.split(" ");

uint countWords;
foreach(ref word; onlyWords) {
	word = word.strip();
	if (word.length > 0)
		countWords++;
}
---


More information about the Digitalmars-d-learn mailing list