GetConsoleScreenBufferInfo 获取单个控制台行的长度
Posted
技术标签:
【中文标题】GetConsoleScreenBufferInfo 获取单个控制台行的长度【英文标题】:GetConsoleScreenBufferInfo for length of a single console line 【发布时间】:2018-09-24 06:45:36 【问题描述】:我已经看到here 可以在给定时间获取到控制台的所有输出的长度,但是我想在控制台中获取单个行的长度(即在特定的COORD
)。 Win32 API 可以做到吗?
【问题讨论】:
“我在这里看到可以在给定时间获取所有输出到控制台的长度”嗯。不。您链接到的答案中的代码不会这样做。 @Swordfish Ahh 所以dwSize.X
是控制台缓冲区的最大(?)宽度?
@Swordfish 如果是这种情况,我可以使用它。我的问题是我试图从控制台中删除行,但有时它会重叠到下一行并清除它
@是的,GetConsoleScreenBufferInfo
为您提供宽度。
【参考方案1】:
使用GetConsoleScreenBufferInfo()
获取控制台屏幕缓冲区的宽度。接下来对您感兴趣的行中从width
到0
的每个位置执行ReadConsoleOutput()
并检查该位置的字符是否是空白字符(isspace()
)。如果不是,则您已找到该行中最后一个字符的位置,其X
-坐标就是该行的长度。
【讨论】:
以上是关于GetConsoleScreenBufferInfo 获取单个控制台行的长度的主要内容,如果未能解决你的问题,请参考以下文章