【发布时间】:2010-12-03 14:44:56
【问题描述】:
我有一个如下所示的文件:
A B C D E
0 8 6 12 5
8 0 10 8 9
6 10 0 7 11
12 8 7 0 6
5 9 11 6 0
我不知道会有多少行和列。我想阅读第一行,它会让我知道期望的行数。我发现了 lisp 的 (read <stream>) 函数,它在一个循环中可以将每个字符解析为符号。但是,我还没有找到将循环限制为仅读取第一行并停在那里的方法。我正在尝试解决的解决方案类似于
(with-open-file (stream "/home/doppler/tmp/testcase1.txt")
(setf line (read-line stream))
(when line
(loop for symbol = (read line nil)
while symbol do (print symbol))))
问题在于(read-line stream) 返回一个字符串,(read line nil) 无法解析该字符串以提取符号(s 表达式)。
如何将字符串行转换为流,或者如果可能的话,直接从字符串中提取符号?
【问题讨论】:
-
make-string-input-stream