模組 Scanf.Scanning

module Scanning: sig .. end

type in_channel 

Scanf 模組的輸入通道概念:這些通道提供了從任何字元來源讀取所需的所有機制,包括 in_channel 值。 Scanf.Scanning.in_channel 值也稱為格式化的輸入通道或等效的掃描緩衝區。下面的 Scanf.Scanning.scanbuf 類型是 Scanning.in_channel 的別名。請注意,Scanning.in_channel 不是並行安全的:並行使用可能會產生任意值或例外。

type scanbuf = in_channel 

掃描緩衝區的類型。掃描緩衝區是格式化輸入函式從中獲取字元的來源。掃描緩衝區保存掃描的目前狀態,以及從輸入獲取下一個字元的函式,以及用於儲存到目前為止匹配的字串的符記緩衝區。

注意:掃描動作通常可能需要預先檢查一個字元;當這個「前瞻」字元不屬於讀取的符記時,它會被儲存回掃描緩衝區,並成為下一個要讀取的字元。

val stdin : in_channel

Scanf 模組的標準輸入概念。Scanning.stdin 是附加到 stdinScanf.Scanning.in_channel 格式化輸入通道。

注意:在互動式系統中,當從 stdin 讀取輸入時,觸發求值的新行字元是輸入的一部分;因此,掃描規範必須正確地跳過這個額外的新行字元(例如,只需在格式字串的最後一個字元新增一個 '\n' 即可)。

type file_name = string 

用於指定檔案名稱的方便別名。

val open_in : file_name -> in_channel

Scanning.open_in fname 會傳回一個 Scanf.Scanning.in_channel 格式化輸入通道,用於從檔案 fname 中以文字模式緩衝讀取。

注意:open_in 傳回一個格式化輸入通道,可以有效率地大塊讀取字元;相反地,下面的 from_channel 傳回的格式化輸入通道必須一次讀取一個字元,導致掃描速度慢得多。

val open_in_bin : file_name -> in_channel

Scanning.open_in_bin fname 會傳回一個 Scanf.Scanning.in_channel 格式化輸入通道,用於從檔案 fname 中以二進位模式緩衝讀取。

val close_in : in_channel -> unit

關閉與給定的 Scanf.Scanning.in_channel 格式化輸入通道相關聯的 in_channel

val from_file : file_name -> in_channel

以上 Scanf.Scanning.open_in 的別名。

val from_file_bin : string -> in_channel

以上 Scanf.Scanning.open_in_bin 的別名。

val from_string : string -> in_channel

Scanning.from_string s 會傳回一個 Scanf.Scanning.in_channel 格式化輸入通道,它會從給定的字串讀取。讀取從字串中的第一個字元開始。當到達字串末尾時,會設定輸入結束條件。

val from_function : (unit -> char) -> in_channel

Scanning.from_function f 會傳回一個 Scanf.Scanning.in_channel 格式化輸入通道,其讀取方法為給定的函式。

當掃描需要更多字元時,會呼叫給定的函式。

當函式沒有更多字元可提供時,它*必須*透過引發例外 End_of_file 來發出輸入結束條件的訊號。

val from_channel : in_channel -> in_channel

Scanning.from_channel ic 會傳回一個 Scanf.Scanning.in_channel 格式化輸入通道,它會從規則的 in_channel 輸入通道 ic 引數讀取。讀取從 ic 的目前讀取位置開始。

val end_of_input : in_channel -> bool

Scanning.end_of_input ic 測試給定的 Scanf.Scanning.in_channel 格式化輸入通道的輸入結束條件。

val beginning_of_input : in_channel -> bool

Scanning.beginning_of_input ic 測試給定的 Scanf.Scanning.in_channel 格式化輸入通道的輸入開始條件。

val name_of_input : in_channel -> string

Scanning.name_of_input ic 會傳回給定 Scanf.Scanning.in_channel 格式化輸入通道的字元來源名稱。