The TextIO 구조
The TextIO 구조
텍스트 스트림에 대한 버퍼링된 입출력을 제공하는 구조예요. 표준 입력·출력·오류 스트림을 포함하고, 명령형 스타일 I/O를 제공해요.
출처: 문서
본문
시놉시스 (Synopsis)
signature TEXT_IO
structure TextIO :> TEXT_IO
structure WideTextIO :> TEXT_IO (* OPTIONAL *)
인터페이스 (Interface)
include IMPERATIVE_IO
structure StreamIO : TEXT_STREAM_IO
where type reader = TextPrimIO.reader
where type writer = TextPrimIO.writer
where type pos = TextPrimIO.pos
val inputLine : instream -> string option
val outputSubstr : outstream * substring -> unit
val openIn : string -> instream
val openOut : string -> outstream
val openAppend : string -> outstream
val openString : string -> instream
val stdIn : instream
val stdOut : outstream
val stdErr : outstream
val print : string -> unit
val scanStream : ((Char.char, StreamIO.instream)
StringCvt.reader
-> ('a, StreamIO.instream)
StringCvt.reader)
-> instream -> 'a option
설명 (Description)
inputLine strm
inputLine은 텍스트 스트림에서 한 줄을 읽어요.
outputSubstr (strm, ss)
input은 사용 가능한 모든 입력을 읽어요.
output (strm, Substring.string ss)
openIn name
output은 텍스트 스트림에 문자열을 써요.
openOut name
openIn·openOut·openAppend는 파일에서 스트림을 열어요.
openAppend name
closeIn·closeOut은 스트림을 닫아요.
openString s
stdIn·stdOut·stdErr는 표준 스트림이에요.
val stdIn : instream
val stdOut : outstream
val stdErr : outstream
이것들은 각각 표준 입력, 출력, 오류 스트림에 해당해요.
print s
문자열 s를 표준 출력 스트림에 출력하고 스트림을 비워요. 개행 문자는 추가되지 않아요. 최상위 환경에서 print로 사용할 수 있어요. 이 함수는 다음과 동등해요:
(output (stdOut, s); flushOut stdOut)
scanStream scanFn strm
스트림 기반 스캔 함수를 명령형(Imperative) I/O 스트림에서 동작하도록 변환해요. 예를 들어 stdIn에서 십진 정수를 스캔하려면 다음과 같이 쓸 수 있어요. 이 함수는 다음과 같이 구현할 수 있어요. scanStream은 스트림 I/O 스캔 함수를 명령형 I/O에서 편리하게 쓰는 방법을 제공할 뿐 아니라, 스캔 중 lookahead 때문에 입력이 실수로 유실되지 않게 보장해요.
scanStream (Int.scan StringCvt.DEC) stdIn
fun scanStream scanFn strm = let
val instrm = getInstream strm
in
case (scanFn StreamIO.input1 instrm)
of NONE => NONE
| SOME(v, instrm') => (
setInstream (strm, instrm');
SOME v)
end