This question was migrated from Computer Graphics Stack Exchange because it can be answered on Stack Overflow. Migrated27个月前Learn more
我的一个非常古老的PostScript代码解析输入行如下:

/buff 1 string def      % check for line wrap every character
/EOLchar (\n) def       % line feed

{ %loop
        currentfile buff readstring exch
        dup EOLchar eq
    { %ifelse
        %...
    }
    { %else
        %...
    } ifelse
    not { %if readstring found EOF
        exit    % end of file
    } if
} loop

有没有一种更有效的方法来读取整行以便进一步处理?
我想把数据嵌入到文件中,每一行都会描述一个线段。
每行由多个数字字段组成,由制表符分隔(因此我将把这些行拆分为字段,并将字段字符串转换为intreal以便于处理)。
当然,我可以从外部转换绘图数据(例如,转换为PostSript数组),但我的想法是在每个数据文件中添加一些固定的magic PostScript头,它将呈现数据。。。

最佳答案

像这样的怎么样?
readline为您处理行(直到解释器定义的字符串容量)。token处理跳过空白并根据需要将数字转换为实数或整数。
还要注意,来自文件读取运算符的布尔结果可以用于早期退出循环,这似乎是有效的。

/buf 65535 string def
/f currentfile def
{
  f buf readline not {exit} if
  { token {exch}{exit} ifelse } loop
  {lineto} stopped {moveto} if
} loop
100 200
300 400
500 600

关于algorithm - PostScript的readstring:有没有更有效的方法来解析行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56472993/

10-10 23:35