2017-02-23 65 views
-4

我知道如何在C++中繪製矩形,但是我不知道如何在該矩形內部寫入 - 或者任何形狀。在C++中創建帶有文本的形狀

int rows = 10, cols = 10; 
for (int x = 0; x<rows; x++) { 
    for (int y = 0; y<cols; y++) { 
     if (x == 0 || x == 9 || y == 0 || y == 9) { 
      cout << "*"; 

     } 

     else { 
      cout << " "; 
     } 
     cout << "Hello"; 
    } 

    cout << endl; 
} 
+0

你忘了問一個問題。 – George

+1

而不是打印「」,打印一些文本,看看會發生什麼。 –

+0

調試器。學習使用調試器。調試器將允許您在打印每行時看到它。 –

回答

0

你可以有一個字符串的載體和「畫」圖像/文本中有:

int rows = 10, cols = 10; 
std::vector<std::string> strs(rows, std::string(cols, ' ')); 
for (int x = 0; x<rows; x++) 
    for (int y = 0; y<cols; y++) 
     if (x == 0 || x == 9 || y == 0 || y == 9) 
      strs[y][x] = '*'; // only issue you have to address row/column not column/row 

std::string text = "foo"; 
strs[rows/2].replace((cols - text.length())/2, text.length(), text); 

for(const auto &str : strs) 
    std::cout << str << std::endl; 

live example

你可能想要去幻想和它包裝成類,並添加方法比如放置文字垂直,對角線等

1

如果沒有控制檯庫(如curses或conio),您可能會在控制檯窗口中寫入x,y秒。 C++ stdout是基於流的,它是爲文本輸出爲電傳打字的世界而設計的。雖然您可以通過包含嵌入文本的屏幕,但這幾乎是對系統的濫用。

同時,設置一個80 x 25的屏幕緩衝區。然後編寫代碼將其打印出來。然後,您可以在該緩衝區中輸出您選擇的x,y字符,然後使用緩衝區打印例程打印整個批次。

相關問題