Lisp 如何将行读取为简单的基字符串?

Lisp 如何将行读取为简单的基字符串?,lisp,common-lisp,sbcl,Lisp,Common Lisp,Sbcl,那么,下面的代码 (取消读取8位行(路径) (打开文件时(流路径:元素类型'base char:外部格式:ascii) (环路 对于行=(读取行流nil) 边线 收集线) 以字符串列表的形式读入文件,字符串类型为SIMPLE-ARRAY-CHARACTER。我想要的是SIMPLE-BASE-STRING。我可以通过强制执行: (取消读取8位行(路径) (打开文件时(流路径:元素类型'base char:外部格式:ascii) (环路 对于行=(读取行流nil) 边线 收集(强制行“简单基字符串

那么,下面的代码

(取消读取8位行(路径)
(打开文件时(流路径:元素类型'base char:外部格式:ascii)
(环路
对于行=(读取行流nil)
边线
收集线)
以字符串列表的形式读入文件,字符串类型为
SIMPLE-ARRAY-CHARACTER
。我想要的是
SIMPLE-BASE-STRING
。我可以通过
强制执行

(取消读取8位行(路径)
(打开文件时(流路径:元素类型'base char:外部格式:ascii)
(环路
对于行=(读取行流nil)
边线
收集(强制行“简单基字符串”))

有没有一种方法不必诉诸于
强制
?我正在运行sbcl 2.0.5。

可移植,不需要。实现可以自由返回他们认为合理的任何类型的字符串

我会使用一个简单的包装器函数,也许会内联使用:

(declaim (inline read-simple-line))
(defun read-simple-line (stream)
  (some-> (read-line stream nil)
          (coerce 'simple-base-string)))

Some->
来自
arrows
)。

不可移植。实现可以自由返回他们认为合理的任何类型的字符串

我会使用一个简单的包装器函数,也许会内联使用:

(declaim (inline read-simple-line))
(defun read-simple-line (stream)
  (some-> (read-line stream nil)
          (coerce 'simple-base-string)))

Some->
来自
箭头)

很高兴知道,谢谢。您知道是否有专门针对SBCL的非便携方式吗?(乍一看似乎不是这样,我又浏览了一些文档,什么也找不到。)@Andrei:我也没有。我甚至猜不出它在使用时会是什么样子。打开
或读取行
的一些特殊参数?很高兴知道,谢谢。您知道是否有专门针对SBCL的非便携方式吗?(乍一看似乎不是这样,我又浏览了一些文档,什么也找不到。)@Andrei:我也没有。我甚至猜不出它在使用时会是什么样子。要打开
读取行
的一些特殊参数?