C++控制台屏幕大小

4

我正在学习C++相关的内容,其中有一个问题是如何将文本居中显示在输出屏幕上。我的建议是使用setw函数来获取字符串长度和控制台屏幕的size,然后进行算法运算,就可以实现真正的文本居中了。但是老师说屏幕大小是80,但是屏幕大小可以改变,如果用户开始调整大小,那么无论如何都无法使输出居中。我有一个小问题,如何获取控制台屏幕的实际大小呢?

#include <iostream>
#include <string>
using namespace std;

const int SCR_SIZE = 80;//some way of telling size

int main(){
   string randomText = "Hello User!";
   cout << setw( ( (80 / 2) + (randomText.length() / 2 ) ) ) 
        << randomText 
        << endl;

   return 0;
}

我找到了一些资料,发现这部分内容。
 #include <cstdlib>

 system("MODE CON COLS=25 LINES=22");

如果我设置执行以确保我的大小是我想要的,那会起作用吗?只是阅读它,所以我不确定它是否实际上是一个c++库。


你不能在标准库中找到它。程序很可能没有使用它。 - chris
杰瑞,这个回答很值得! :) - StilesCrisis
2个回答

4
你可以使用 #include <windows.h> 并调用 GetConsoleScreenBufferInfo 方法。使用此方法时,你需要一个指向标准输出流的 Windows 句柄,你可以使用 GetStdHandle 来检索它。
请注意,得到的代码将是针对Windows的(而你现有的代码是可移植的,所以它应该可以在Linux、Mac OS、*BSD等系统上正常运行)。

是的,但如果我们将代码模块化,我们就不需要Windows库了。有什么技巧吗?也许输出一个空字符串以查看在中断之前有多少个空格? - EasyBB
添加了一个更新,如果它确实是C ++,我认为会很好。 - EasyBB
2
SetConsoleWindowInfo函数也应该是解决方案的一部分。 - Benilda Key
@BenKey:是的 - 不幸的是,你最终不得不使用相当多的控制台函数。 - Jerry Coffin

0

我发现无法使控制台应用程序窗口比屏幕的一半还要大,就像cmd(命令提示符)一样。我只是要警告你,如果你不能手动调整它的大小到任意尺寸,你可能无法使其调整大小。也许你想尝试Windows应用程序或Windows表单应用程序?


1
这是不正确的。只需按下Alt + Space即可打开系统菜单。然后打开属性对话框。您可以在布局窗格上调整窗口大小。使用GetConsoleScreenBufferInfo和SetConsoleWindowInfo函数可以通过编程方式完成此操作。 - Benilda Key

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接