将水平滚动条添加到控制台
Add Horizontal Scroll Bar to Console
我正在用C++编写一个程序,该程序将一些文本输出到控制台。但是,这段文字通常很长,但我需要在一行上使用它。程序不会继续在同一行上写入,而是转到下一行并在那里写入。
有没有办法让程序写到同一行,并添加一个水平滚动条,以便我可以看到所有内容?
例如,以下代码在多行上输出字母 a。
#include <iostream>
using namespace std;
int main() {
for (int n = 0; n < 1000; n++) {
cout << "a";
}
}
有没有办法让所有"a"输出在同一行上?显然,这不适合控制台屏幕。那么,如何添加水平滚动条以查看所有内容?
此问题特定于操作系统,无法使用标准C++解决。正如您在评论中所说的您正在使用 Windows 一样,您需要查看 Microsoft 提供的文档。
以下是与控制台交互的功能列表:https://learn.microsoft.com/en-us/windows/console/console-functions
您感兴趣的是
BOOL WINAPI SetConsoleScreenBufferSize(
_In_ HANDLE hConsoleOutput,
_In_ COORD dwSize
);
如果您不知道控制台屏幕缓冲区是什么,Micrososft 在解释它方面比我做得更好,所以这里是: https://learn.microsoft.com/en-us/windows/console/console-screen-buffersenter 链接说明在这里
对您来说,重要的部分是控制台屏幕缓冲区是一个二维数组。更改数组大小,然后更改行的长度。
编辑 0: 这是我刚刚使用Visual Studio 2017和C++在最新的Windows 10内部版本中编写的示例代码。
执行SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE),coordinates)
后,所有内容都在一行上,并且有一个滚动条。但是有一个问题:此解决方案仅在用户不调整控制台大小时才有效。用户调整窗口大小后,一切都像以前一样。这个问题可能可以通过挖掘Microsoft的文档来解决。还没有机会这样做。
#include "stdafx.h"
#include <Windows.h>
#include <iostream>
using namespace std;
int main()
{
for (short int i = 0; i < 1000; i++)
{
cout << "a";
}
cout << endl;
_COORD coordinates;
coordinates.X = 1000;
coordinates.Y = 1000;
if (0 == SetConsoleScreenBufferSize(
GetStdHandle(STD_OUTPUT_HANDLE),
coordinates
))
{
return -1;
}
for (short int i = 0; i < 1000; i++)
{
cout << "b";
}
cout << endl;
return 0;
}
以下代码不是严格需要的:
for (short int i = 0; i < 1000; i++)
{
cout << "b";
}
Windows 将在重新捕获缓冲区之前重新格式化已打印的任何内容。
在写入控制台缓冲区之前,使用SetConsoleScreenBufferSize
或SetConsoleScreenBufferInfoEx
函数更改控制台缓冲区的大小。
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 如何在C++中从两个单独的for循环中添加两个数组
- 如何在控制台应用程序中添加滚动功能以显示更大的输入
- 如何将控制台(stdout)添加为g3log中的接收器
- 如何向控制台应用程序添加图标
- 将水平滚动条添加到控制台
- boost::log 输出到 Visual Studio 输出控制台 - 为格式添加额外的 LF/CR
- 将Win32控制台项目模板添加到Visual Studio社区2017 15.5.2
- 将滚动条添加到控制台
- 在C++中添加while循环以继续或退出控制台
- 如何将图标添加到C++控制台应用程序
- 将 GUI 添加到 c++ win32 控制台
- 在主小部件(控制台)QT下面添加小部件
- 如何将"select file"拨号添加到控制台应用程序
- 为c++控制台应用程序添加状态栏
- 向现有的MFC应用程序添加控制台
- 如何在Win32项目中添加控制台窗口,Visual Studio 2010
- 数字添加程序,最多100位数字.控制台输出奇数
- 如何添加颜色编码到提升::日志控制台输出
- 如何在不C++中添加换行符的情况下从控制台读取整数