2014-10-09 227 views
4

所以我在C++学习大学的一些东西,老师和我讨论了如何将文本居中放到输出屏幕上。所以我的建议是使用setw,但得到控制台屏幕的字符串长度和size,做算法和BAM我们真正居中文本。他说屏幕尺寸为80,但屏幕可以调整大小,不管用户何时开始调整大小,输出位于中心位置都不起作用。只是我有一个小问题,如何获得控制台屏幕的实际大小?C++控制台的屏幕尺寸

#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"); 

将这项工作将其设置在执行,以确保我的尺寸是什么我希望它是什么?只是通读它,所以我不是100%肯定,如果这实际上是一个C++库

+0

你不能在标准库内。该计划可能不会使用一个。 – chris 2014-10-09 03:54:00

+0

杰里,这是值得成为一个答案:) – StilesCrisis 2014-10-09 03:55:14

回答

4

您可以#include <windows.h>并呼吁GetConsoleScreenBufferInfo。要使用它,你需要一个Windows句柄来标准输出流,你可以用GetStdHandle来检索。

注意,生成的代码将是Windows专用的(而当前的代码是可移植的,所以应该在Linux,Mac OS,* BSD等运行正常)

+0

是的,但如果我们要使代码模块化,那么我们不希望Windows库。有没有黑客?也许输出一个空白的空白字符串来查看有多少直到中断? – EasyBB 2014-10-09 04:00:44

+0

添加了一个更新,我认为它会很好,如果它实际上是C++ – EasyBB 2014-10-09 04:09:07

+1

SetConsoleWindowInfo函数也应该是解决方案的一部分。 – 2014-10-09 04:23:22

0

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

+0

添加了一些更新,以查看 – EasyBB 2014-10-09 04:08:51

+0

这是不正确的。只需点击Alt + Space打开系统菜单。然后调出属性对话框。您可以在布局窗格上调整窗口大小。这可以使用GetConsoleScreenBufferInfo和SetConsoleWindowInfo函数以编程方式完成。 – 2014-10-09 04:21:36