使用C代码读取一行文本,并允许使用TERMCAP例程进行光标移动和编辑(类似于"readline“库)。问题是:当一个或多个字符需要从行尾擦除时,更有效的方法是(1)将光标移至EOL并发出\b \b序列;或(2)将光标移至截断点并发出单个“erase- to - of - line”命令?不确定后一条命令有多“昂贵”,特别是在宽终端上。有人知道权衡/指导方针是什么吗?
发布于 2017-02-27 00:39:11
这取决于输出设备(终端)以及要擦除的字符数。通常,如果设备一开始就支持Erase-to-EOL,它就会出现,因为它比执行一个或两个以上的Erase-Single-Character操作要快。
除非你是在一个非常慢的连接上操作,否则这可能无关紧要。回到80年代,这类事情是一个令人担忧的问题,因为我们经常在1200bps以上的连接上工作;这也是为什么人们经常避免咒骂而直接使用术语上限。如今,通信和输出设备通常都比用户的反应时间快得多,你经常可以完全重新绘制屏幕。
出于好奇,为什么要使用termcap呢?几十年前,在大多数UNIXy平台上,它被terminfo所取代。更不用说像curses这样的高级库了。
https://stackoverflow.com/questions/42464164
复制相似问题