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

2023-12-14

我正在 Erlang 中开发一个游戏,现在我需要读取标准输入。我尝试了以下调用:

io:fread() 
io:read()

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

  1. 当用户按下回车键时,如何读取用户输入的字符串? (请记住该字符串包含空格)
  2. 如何将“56”这样的字符串转换为数字 56?

读取行

您可以使用io:get_line/1从控制台获取以换行符结尾的字符串。

3> io:get_line("Prompt> ").
Prompt> hello world how are you?
"hello world how are you?\n"

io:read将为您提供 erlang 术语,因此您无法读取字符串,除非您想让用户将字符串括在引号中。

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

解析整数

你可以转换"56" to 56 using erlang:list_to_integer/1.

5> erlang:list_to_integer("56").
56

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

10> string:to_integer("56hello").
{56,"hello"}
11> string:to_integer("56").     
{56,[]}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我如何使用 erlang api 解析标准输入? 的相关文章

  • Erlang:NIF 和透析器警告

    在实施 NIF 时 Dialyzer 给了我 函数 crc16 1 没有本地返回 可能是因为我这样做exit在 erl 模块中 如官方文档推荐 module my nifs export crc16 1 on load init 0 ini
  • 如何在没有任何服务器的情况下创建 P2P 网络聊天?

    有没有一种方法可以在没有任何服务器的情况下创建 P2P 网络聊天 可以 但是您必须决定见面地点 如果你的朋友把他的IP发给你 你就可以连接 那么你只需要告诉更多的人加入即可 一段时间后 你会变得越来越大 然后 如果网络上的某个链接发生故障
  • Erlang TCP 套接字关闭

    为了学习 Erlang 我正在尝试实现一个基于gen tcp 不幸的是 我的代码似乎触发了一些有线行为 为了演示这个问题 我附上了我的实现的最小化版本 它足以重现该问题 无论 HTTP 请求是什么 它都只是传递静态 200 OK 当我尝试运
  • RabbitMQ 失败,错误:无法连接到节点rabbit@TPAJ05421843:nodedown

    在 Windows 7 Enterprise 计算机上 我全新安装了 Erlang 17 4 和 RabbitMQ 3 4 3 x64 安装成功且顺利 我还没有尝试创建我的第一个队列或交换器 但我已经看到了麻烦 这个问题类似于另一个SO帖子
  • Erlang - 导入 GPG 公钥

    我正在尝试在 Erlang 中做一些与公钥相关的事情 它们要求我跟踪公钥 根据这一页 http www erlang org doc apps public key using public key html id61611 我应该能够通过
  • 如何使用 ibrowse 将附件上传到 CouchDB 中的文档?

    我已经使用curl上传图像文件Penguins jpg 例如 C curl gt curl vX PUT H Content Type image jpeg http localhost 5984 DBNAME DOCID Penguins
  • Erl 无法连接到本地 EPMD。为什么?

    Erlang R14B04 erts 5 8 5 source 64 bit rq 1 async threads 0 kernel poll false Eshell V5 8 5 abort with G root ip 10 101
  • 设置 Emacs 进行 Erlang 编程

    Emacs 是 Erlang 编程的首选 IDE 有很多好的模式 distel erlware mode 默认的 erlang 模式 但是您对设置 Emacs 进行专业 Erlang 开发有何建议 按照中所述设置 erlang mode自述
  • 在 digraph_utils:is_acirclic/1 返回 false 后查找循环或循环

    我怎样才能 有效地 在Erlang有向图中找到循环或循环digraph utils is acyclic 1返回假 EDIT is acyclic is 定义为 https github com erlang otp blob maint
  • Erlang gen_tcp 连接问题

    简单的问题 这段代码 client gt SomeHostInNet localhost to make it runnable on one machine ok Sock gen tcp connect SomeHostInNet 56
  • 在 Erlang shell 中加载项目 Rebar 依赖项的简单方法

    我有一个使用 Rebar 作为构建工具的项目 开发时 我希望 Rebar config 中指定的所有应用程序依赖项都能尽可能轻松地编译并加载到 shell 中 我在 Emacs 中使用 Erlang shell 有什么快速方法可以做到这一点
  • 如何在erlang中读取mnesia数据库的所有记录?

    我是 erlang 新手 我需要对从 mnesia 数据库获取的所有记录进行一些操作 Result mnesia dirty read mydatabase key1 key2 case Result of gt DEBUG No such
  • 在 Erlang 中实现图灵机

    我有一个小项目 与实现图灵机非常相似 我遇到的基本问题是保存当前配置 例如头部的位置和更多信息 对我来说特别重要的是保留头部位置以使其向前或向后移动 Erlang 解决这个问题的方法是什么 我是 Erlang 新手 但据我探索 OTP ge
  • 为什么 epmd 进程不退出?

    在我退出 erlang shell 后 epmd 进程仍然存在 这是一个错误还是一个功能 这是很正常的 EPMD 是一个主机守护进程 当人们打算使用分布式节点时 就需要它的存在 当仅在同一台机器上使用多个节点时 它也很有用
  • Erlang:将元素“添加到元组之前”

    是否可以编写一个与此函数等效的更快的函数 prepend X Tuple gt list to tuple X tuple to list Tuple 在我看来 这种事情是不被鼓励的 如果您想要一个列表 请使用一个 Erlang 入门 ht
  • 在 Erlang 中是否有一种惯用的方法来对函数参数进行排序?

    似乎列表模块中的不一致 例如 split 将数字作为第一个参数 将列表作为第二个参数 而 sublists 将列表作为第一个参数 将 len 作为第二个参数 好的 讲一下我记得的一些历史以及我的风格背后的一些原则 正如克里斯蒂安所说 图书馆
  • Erlang 进程如何(如果有的话)映射到内核线程?

    Erlang 因能够支持许多轻量级进程而闻名 它之所以能做到这一点 是因为它们不是传统意义上的进程 甚至不是 P 线程中的线程 而是完全在用户空间中的线程 这很好 实际上很棒 那么 Erlang 线程如何在多核 多处理器环境中并行执行呢 当
  • Erlang 出现错误 ** 1:之前的语法错误:'->' **

    我已经开始在 Erlang 中进行一些实践 我得到 1 syntax error before gt 每当我声明任何功能时 例如 计算列表的总和 这是实验性的 当然有内置函数用于查找列表的总和 sum gt 0 sum H T gt H s
  • 创建现有 ram 表的 mnesia disk_copies

    我有一个完整的 mnesia ram copies only 数据库 但在将 disk copy 表添加到节点时遇到问题 目前我这样做 创建我所有的 ram copy 表 节点 在disk copy to be节点上启动mnesia 使用以
  • Erlang:到 Python 实例的端口没有响应

    我正在尝试通过 Erlang 端口与外部 python 进程进行通信 首先 打开一个端口 然后通过 stdin 将消息发送到外部进程 我期待在进程的标准输出上得到相应的答复 我的尝试如下所示 open a port Port open po

随机推荐