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() 获取控制台屏幕缓冲区的宽度。接下来对您感兴趣的行中从width0 的每个位置执行ReadConsoleOutput() 并检查该位置的字符是否是空白字符(isspace())。如果不是,则您已找到该行中最后一个字符的位置,其X-坐标就是该行的长度。

【讨论】:

以上是关于GetConsoleScreenBufferInfo 获取单个控制台行的长度的主要内容,如果未能解决你的问题,请参考以下文章