我希望在Haskell上拥有一个“getInt :: IO Int”函数。这个函数将从标准输入中获取一个整数,并保留缓冲区中的其余内容。
我已经找到了这种类型的库函数,“readLn :: IO Int”。但是,例如,对于像这样的输入,它将无法工作:
因为它会占用整个行
标准库中是否有任何函数可以完成此操作?是否有任何简单/明显的方法可以创建一个我错过的
我已经找到了这种类型的库函数,“readLn :: IO Int”。但是,例如,对于像这样的输入,它将无法工作:
2
3 4
因为它会占用整个行
3 4
,而不是只拿走 3
并将 4
留给下一个 getInt
。虽然我知道可以读取完整的字符串,然后使用 words
进行拆分,但我想问是否有一种不消耗缓冲区的方法。标准库中是否有任何函数可以完成此操作?是否有任何简单/明显的方法可以创建一个我错过的
getInt
?
Int
之间的分隔符?如果可以,那么编写一个循环调用getChar
直到看到分隔符,然后对生成的String
调用readIO
看起来很简单。 - Daniel WagnergetLine
的实现中将\n
更改为getLine
实现中所有缓冲区感知的花哨操作。 - Daniel Wagner