std.stdio

Standard I/O functions that extend core.stdc.stdio. core.stdc.stdio is publically imported when importing std.stdio.

There are three layers of I/O:

  1. The lowest layer is the operating system layer. The two main schemes are Windows and Posix.
  2. C's stdio.h which unifies the two operating system schemes.
  3. std.stdio, this module, unifies the various stdio.h implementations into a high level package for D programs.

Public Imports

core.stdc.stdio
public import core.stdc.stdio;
Undocumented in source.

Members

Aliases

KeepTerminator
alias KeepTerminator = Flag!"keepTerminator"

If flag KeepTerminator is set to KeepTerminator.yes, then the delimiter is included in the strings returned.

stderr
alias stderr = makeGlobal!(StdFileHandle.stderr)

The standard error stream.

stdin
alias stdin = makeGlobal!(StdFileHandle.stdin)

The standard input stream.

stdout
alias stdout = makeGlobal!(StdFileHandle.stdout)

The standard output stream.

Classes

StdioException
class StdioException

Thrown if I/O errors happen.

Enums

LockType
enum LockType

Used to specify the lock type for File.lock and File.tryLock.

Functions

_popen
FILE* _popen(R1 name, R2 mode)

Convenience function that forwards to core.sys.posix.stdio.popen with appropriately-constructed C-style strings.

chunks
auto chunks(File f, size_t size)

Iterates through a file a chunk at a time by using foreach.

openNetwork
File openNetwork(string host, ushort port)

Experimental network access via the File interface

readf
uint readf(A args)
uint readf(const(char)[] format, A args)

Reads formatted data from stdin using std._format.formattedRead.

readln
S readln(dchar terminator)

* Read line from stdin. * * This version manages its own read buffer, which means one memory allocation per call. If you are not * retaining a reference to the read data, consider the readln(buf) version, which may offer * better performance as it can reuse its read buffer. * * Returns: * The line that was read, including the line terminator character. * Params: * S = Template parameter; the type of the allocated buffer, and the type returned. Defaults to string. * terminator = Line terminator (by default, '\n'). * Note: * String terminators are not supported due to ambiguity with readln(buf) below. * Throws: * StdioException on I/O error, or UnicodeException on Unicode conversion error. * Example: * Reads stdin and writes it to stdout.

readln
size_t readln(C[] buf, dchar terminator)
size_t readln(C[] buf, R terminator)

* Read line from stdin and write it to buf[], including terminating character. * * This can be faster than line = readln() because you can reuse * the buffer for each call. Note that reusing the buffer means that you * must copy the previous contents if you wish to retain them. * * Returns: * size_t 0 for end of file, otherwise number of characters read * Params: * buf = Buffer used to store the resulting line data. buf is resized as necessary. * terminator = Line terminator (by default, '\n'). Use std.ascii.newline * for portability (unless the file was opened in text mode). * Throws: * StdioException on I/O error, or UnicodeException on Unicode conversion error. * Example: * Reads stdin and writes it to stdout.

toFile
void toFile(T data, string fileName)

Writes an array or range to a file. Shorthand for data.copy(File(fileName, "wb").lockingBinaryWriter). Similar to std.file.write, strings are written as-is, rather than encoded according to the File's orientation.

write
void write(T args)

Writes its arguments in text format to standard output (without a trailing newline).

writef
void writef(A args)
void writef(Char[] fmt, A args)

Writes formatted data to standard output (without a trailing newline).

writefln
void writefln(A args)
void writefln(Char[] fmt, A args)

Equivalent to writef(fmt, args, '\n').

writeln
void writeln(T args)

Equivalent to write(args, '\n'). Calling writeln without arguments is valid and just prints a newline to the standard output.

Structs

File
struct File

Encapsulates a FILE*. Generally D does not attempt to provide thin wrappers over equivalent functions in the C standard library, but manipulating FILE* values directly is unsafe and error-prone in many ways. The File type ensures safe manipulation, automatic file closing, and a lot of convenience.

lines
struct lines

Iterates through the lines of a file by using foreach.

Templates

isFileHandle
template isFileHandle(T)

Indicates whether T is a file handle, i.e. the type is implicitly convertable to File or a pointer to a core.stdc.stdio.FILE.

Meta