當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


erlang fread(Prompt, Format)用法及代碼示例


fread(Prompt, Format) -> Result
fread(IoDevice, Prompt, Format) -> Result
類型:
IoDevice = device()
Prompt = prompt()
Format = format()
Result = 
    {ok, Terms :: [term()]} |
    {error, {fread, FreadError :: io_lib:fread_error()}} |
 server_no_data()
server_no_data() = {錯誤,錯誤說明::term()} |埃夫

從標準輸入 ( IoDevice ) 讀取字符,並用 Prompt 進行提示。根據 Format 解釋字符。 Format 包含指導輸入解釋的控製序列。

Format 可以包含以下內容:

  • 空白字符(空格、製表符和換行符)導致輸入被讀取到下一個非空白字符。

  • 必須與下一個輸入字符匹配的普通字符。

  • 控製序列,其通用格式為 ~*FMC ,其中:

    • 字符* 是可選的返回抑製字符。它提供了一種指定要省略的字段的方法。

    • F 是輸入字段的field width

    • M 是一個可選的翻譯修飾符(其中 t 是唯一受支持的,即 Unicode 翻譯)。

    • C 確定控製序列的類型。

    除非另有說明,否則所有控製序列都會忽略前導空格。輸入字段的寬度不能超過一行。

    可用的控製序列:


    ~

    輸入中應包含單個 ~


    d

    應為十進製整數。


    u

    需要以 2-36 為基數的無符號整數。字段寬度參數用於指定基數。不會跳過前導空白字符。


    -

    需要一個可選的符號字符。符號字符 - 給出返回值 -1 。符號字符 + 或沒有符號給出 1 。字段寬度參數被忽略。不會跳過前導空白字符。


    #

    需要以 2-36 為基數且帶有 Erlang-style 基數前綴的整數(例如 "16#ffff" )。


    f

    預計為浮點數。它必須遵循 Erlang 浮點數語法。


    s

    讀取一串非空白字符。如果指定了字段寬度,則會讀取此數量的字符,並刪除所有尾隨空白字符。返回一個 Erlang 字符串(字符列表)。

    如果 Unicode 轉換有效 ( ~ts ),則接受 > 255 個字符,否則不接受。使用翻譯修飾符,返回的列表因此也可以包含> 255的整數:

    1> io:fread("Prompt> ","~s").
    Prompt> <Characters beyond latin1 range not printable in this medium>
    {error,{fread,string}}
    2> io:fread("Prompt> ","~ts").
    Prompt> <Characters beyond latin1 range not printable in this medium>
    {ok,[[1091,1085,1080,1094,1086,1076,1077]]}

    a

    s 類似,但結果字符串被轉換為原子。


    c

    讀取等於字段寬度的字符數(默認為 1)並作為 Erlang 字符串返回。但是,前導和尾隨空白字符不會像 s 那樣被省略。返回所有字符。

    Unicode 翻譯修飾符的工作方式與 s 相同:

    1> io:fread("Prompt> ","~c").
    Prompt> <Character beyond latin1 range not printable in this medium>
    {error,{fread,string}}
    2> io:fread("Prompt> ","~tc").
    Prompt> <Character beyond latin1 range not printable in this medium>
    {ok,[[1091]]}

    l

    返回截至該點已掃描的字符數,包括空白字符。

    該函數返回:


    {ok, Terms}

    讀取成功,Terms 是成功匹配和讀取的項目列表。


    eof

    遇到文件結尾。


    {error, FreadError}

    讀取失敗,FreadError 給出有關錯誤的提示。


    {error, ErrorDescription}

    讀取操作失敗,參數 ErrorDescription 給出有關錯誤的提示。

例子:

20> io:fread('enter>', "~f~f~f").
enter>1.9 35.5e3 15.0
{ok,[1.9,3.55e4,15.0]}
21> io:fread('enter>', "~10f~d").
enter>     5.67899
{ok,[5.678,99]}
22> io:fread('enter>', ":~10s:~10c:").
enter>:   alan   :   joe    :
{ok, ["alan", "   joe    "]}

相關用法


注:本文由純淨天空篩選整理自erlang.org大神的英文原創作品 fread(Prompt, Format) -> Result。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。