C++ 控制台屏幕大小

c++ console screen size

提问人:EasyBB 提问时间:10/9/2014 最后编辑:Eryk SunEasyBB 更新时间:10/9/2014 访问量:18681

问:

所以我在大学里学习了一些关于C++的东西,我和老师讨论了如何将文本居中到输出屏幕。所以我的建议是使用但获取字符串的长度和控制台屏幕的长度,做算法和 BAM,我们有真正居中的文本。他说屏幕大小是,但屏幕可以调整大小,无论输出居中,用户开始调整大小都是行不通的。我只是一个小问题,如何获得控制台屏幕的实际尺寸?setwsize80

#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++ 库,我不是 100% 肯定的

C++ Windows 控制台 IOSTREAM setW

评论

0赞 chris 10/9/2014
您不能在标准库中。该程序很可能不使用一个。
0赞 StilesCrisis 10/9/2014
杰瑞,这应该是一个答案:)

答:

4赞 Jerry Coffin 10/9/2014 #1

可以调用 GetConsoleScreenBufferInfo。若要使用它,需要标准输出流的 Windows 句柄,可以使用 GetStdHandle 检索该句柄。#include <windows.h>

请注意,生成的代码将是特定于 Windows 的(而您当前的代码是可移植的,因此它应该可以在 Linux、Mac OS、*BSD 等上运行良好)

评论

0赞 EasyBB 10/9/2014
是的,但是如果我们要使代码模块化,那么我们就不会想要 Windows 库。有什么黑客吗?也许输出一个空的空格字符串,看看有多少个,直到中断?
0赞 EasyBB 10/9/2014
添加了一个更新,我认为如果它实际上是 C++ 会很好
2赞 Benilda Key 10/9/2014
SetConsoleWindowInfo 函数也应是解决方案的一部分。
0赞 Jerry Coffin 10/9/2014
@BenKey:是的,不幸的是,你最终不得不使用相当多的控制台功能。
0赞 user3882772 10/9/2014 #2

我发现不可能使控制台应用程序窗口大于屏幕的一半以上,就像 cmd(命令提示符)一样。我只是警告你,如果你不能手动将它调整为你想要的任何大小,你可能无法调整它的大小。也许您想尝试 Windows 应用程序或 Windows 窗体应用程序?

评论

1赞 Benilda Key 10/9/2014
这是不正确的。只需按 Alt + 空格键即可调出系统菜单。然后打开“属性”对话框。您可以在“布局”窗格上调整窗口大小。这可以使用 GetConsoleScreenBufferInfo 和 SetConsoleWindowInfo 函数以编程方式完成。