`$ stdin.getc`和`$ stdin.read`之间的内存使用差异

时间:2017-02-21 11:41:06

标签: ruby

我的问题是 - 我假设$stdin.read一次将整个输入字符串加载到内存中,而.getc一次只加载一个字符。

这是对的吗,我不确定?

1 个答案:

答案 0 :(得分:0)

IO#read

  

从I / O流中读取长度字节。

     

长度必须是非负整数或nil

     

如果 length 是一个正整数,它会尝试读取 length 字节而不是   任何转换(二进制模式)。它返回nil length 的字符串   是1到长度字节。零意味着它在开始时遇到了EOF。 1到   length-1字节字符串表示在读取结果后满足EOF。该    length 字节字符串表示它不符合EOF。结果字符串是   始终是ASCII-8BIT编码。

     

如果 length 被省略或是nil,则读取直到EOF和编码   转换已应用。即使满足EOF,它也会返回一个字符串   开始。

     

如果 length 为零,则返回""

     

如果存在可选的outbuf参数,则必须引用a   字符串,它将接收数据。 outbuf将只包含   方法调用后接收数据,即使它不是空的   开始。

     

在文件末尾,它会返回nil"",具体取决于长度ios.read()和   ios.read(nil)返回""ios.read(positive-integer)会返回nil

IO#getc

  

从ios读取一个字符的字符串。如果在结束时调用,则返回nil   文件。