40 lines
2.4 KiB
Plaintext
40 lines
2.4 KiB
Plaintext
[set
|
||
title = "Flux d'entrée et de sortie standards"
|
||
partAs = chapitre
|
||
translator = "Raphaël Jakse"
|
||
proofreader = "Stéphane Goujet"
|
||
]
|
||
|
||
Jusqu'ici, l'affichage de nos programmes apparaissait dans la console. Bien qu'elle soit la destination dans la plupart des cas, en réalité les caractères sont envoyés dans les [* flux de sortie] des programmes.
|
||
|
||
La sortie standard est basée sur les caractères~ : tous les objets à afficher sont d'abord convertis en leur représentation sous forme de caractères et sont ensuite envoyés à la sortie un par un en tant que caractères. Par exemple, la valeur entière 100 que nous avons affichée dans le chapitre précédent n'est pas envoyée à la sortie en tant que valeur 100, mais comme trois caractères~ : '1', '0', et '0'.
|
||
|
||
De façon similaire, ce que nous percevons normalement comme le clavier est en fait le [* flux d'entrée standard] d'un programme et est aussi basé sur les caractères. L'information vient toujours sous forme de caractères à convertir en données. Par exemple la valeur 42 vient en fait de l'entrée standard sous forme de caractères~ : '4' et '2'.
|
||
|
||
Ces conversions se font automatiquement.
|
||
|
||
Ce concept de caractères qui se suivent est appelé un [* flux de caractères]. Comme l'entrée standard et la sortie standard du D correspondent à cette description, ce sont des flux de caractères.
|
||
|
||
Les noms des flux d'entrée standard et de sortie standard en D sont respectivement [c stdin] et [c stdout].
|
||
|
||
Les opérations sur ces flux nécessitent normalement le nom du flux, un point, et l'opération, comme dans [c stream.operation()]. Cependant, comme [c stdin] et [c stdout] sont très couramment utilisés, par commodité, les opérations standard les concernant peuvent être appelées sans qu'il y ait besoin du nom du flux et du point, comme dans [c operation()].
|
||
|
||
[c writeln], que l'on a utilisé dans les chapitres précédents, est en effet la forme abrégée de [c stdout.writeln]. De même, [c write] est la forme abrégée de [c stdout.write]. Du coup, le programme ''hello world'' peut aussi être écrit comme cela~ :
|
||
|
||
|
||
[code=d <<<
|
||
import std.stdio;
|
||
|
||
void main()
|
||
{
|
||
stdout.writeln("Hello world!");
|
||
}
|
||
>>>]
|
||
|
||
[ = Exercice
|
||
|
||
Observez que [c write] (ou [c writeln]) fonctionne de la même manière que [c stdout.write] (ou [c stdout.writeln]).
|
||
|
||
[[part:corrections/es | … La solution]
|
||
]
|