【问题标题】:c++ console screen sizec++控制台屏幕大小
【发布时间】:2014-10-09 03:51:41
【问题描述】:

所以我在大学里学习了一些关于 C++ 的东西,我和老师开始讨论如何将文本实际居中到输出屏幕。所以我的建议是使用setw,但是得到字符串的长度和控制台屏幕的size,做算法和BAM,我们有真正的居中文本。他说屏幕大小是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++ 库,我不是 100% 肯定的

【问题讨论】:

  • 你不能在标准库中。该程序很可能不使用一个。
  • 杰瑞,这应该是一个答案:)

标签: c++ windows console iostream setw


【解决方案1】:

您可以#include &lt;windows.h&gt; 并致电GetConsoleScreenBufferInfo。要使用它,您需要标准输出流的 Windows 句柄,您可以使用 GetStdHandle 检索它。

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

【讨论】:

  • 是的,但是如果我们要使代码模块化,那么我们就不需要 windows 库了。有什么黑客吗?也许输出一个空的空白字符串,看看有多少直到中断?
  • 添加了一个我认为如果它实际上是 C++ 会很好的更新
  • SetConsoleWindowInfo 函数也应该是解决方案的一部分。
  • @BenKey:是的——不幸的是,你最终不得不使用很多控制台功能。
【解决方案2】:

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

【讨论】:

  • 这是不正确的。只需按 Alt + Space 即可调出系统菜单。然后弹出属性对话框。您可以在布局窗格中调整窗口大小。这可以使用 GetConsoleScreenBufferInfo 和 SetConsoleWindowInfo 函数以编程方式完成。
猜你喜欢
  • 2019-11-16
  • 2020-09-29
  • 2013-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多