2014-10-09 139 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