如何用erlang api解析标准输入?

opt*_*enk 2 erlang

我正在Erlang开发游戏,现在我需要阅读标准输入.我尝试了以下调用:

io:fread() 
io:read()
Run Code Online (Sandbox Code Playgroud)

问题是,当它包含空格时,我无法读取整个字符串.所以我有以下问题:

  1. 当我按下回车键时,如何读取用户键入的字符串?(记住该字符串包含空格)
  2. 如何在数字56中转换像"56"这样的字符串?

zaq*_*est 7

读线

您可以使用io:get_line/1从控制台通过换行来终止字符串.

3> io:get_line("Prompt> ").
Prompt> hello world how are you?
"hello world how are you?\n"
Run Code Online (Sandbox Code Playgroud)

io:read 会得到你的erlang术语,所以你不能读取字符串,除非你想让你的用户用引号括起字符串.

模式io:fread似乎不允许您读取包含空格的任意长度字符串.

解析整数

您可以转换"56"56使用erlang:list_to_integer/1.

5> erlang:list_to_integer("56").
56
Run Code Online (Sandbox Code Playgroud)

或使用string:to_integer/1它也会返回字符串的其余部分

10> string:to_integer("56hello").
{56,"hello"}
11> string:to_integer("56").     
{56,[]}
Run Code Online (Sandbox Code Playgroud)