2017-03-27 100 views
-1

我已經做了一個簡單的C++控制檯計算器,它做它應該做的。完成計算後,它會詢問用戶他/她是否想再製作一個。如果是,循環重複,直到用戶說不;如果沒有應用程序顯示「CLOSING」並在2秒後關閉。我想讓程序顯示「CLOSING」,等待半秒顯示「CLOSING」,另一半顯示「CLOSING ..」,另一個「CLOSING ...」,然後關閉通過退出(-1), 你得到的想法...將FOR附加到STR for循環內

我已經完成了這個(與for循環),但每個cout是在不同的線上。 例如

CLOSING。

閉幕..

閉幕...

我希望它是一個靜態的 「關閉」,但 ''追加三次。

下面的代碼:

for (int a = 0; a < 3 ; a++) 
     { 
      Closing += "."; 
      std::cout<<Closing<<std::endl; 
      Sleep(500); 

* sClosing是我如上定義主 「CLOSING」()的字符串。

所以重複我的問題:有沒有什麼辦法可以有一條線,只有一個「CLOSING」,只有'。'追加(3次)?

*我很抱歉,如果這是顯而易見的;我是C++的新手,但不是編程,所以如果你想解釋一下像'\ f'這樣的目標/功能。

這也是我在計算器上的第一篇文章,所以如果事情不清楚或錯誤(在格式化等方面請幫小白出;-) *

+0

只是一個小小的評論:儘管一開始關閉的時候一些動畫看起來很酷,事實上它很快就會變成一種討厭的東西。但你很快就會發現,然後你可以將其刪除。 – stefaanv

回答

1

在大多數遊戲機,使用回車符('\r' )會做到這一點。

for(int i = 0; i < 4; i++) { 
    std::cout << "Closing"; 
    for(int j = 0; j < i; j++) { 
     std::cout << '.'; 
    } 
    std::cout << '\r'; 
    Sleep(500); 
} 

這也是非常有用的,如果你有在那裏,而不是僅僅附加了一段,你希望它定期更改消息的程序。

for(int i = 0; i < 4; i++) { 
    std::cout << "Closing"; 
    for(int j = 0; j < i; j++) { 
     std::cout << '.'; 
    } 
    std::cout << '\r'; 
    Sleep(500); 
} 
std::cout << "Now Closed!" << '\n'; 

你的另一種選擇是找到一個庫,可以讓你動態程序的控制檯,但可能過於複雜看起來像一個相對簡單的程序。

+0

我從來沒有想過在for循環中使用for循環!非常感謝! – madcode

+0

雖然只有一個問題,\ r確實做了什麼?我可以看到清除了這一行,但是如果有空行(\ n)會刪除它,還是可以刪除多行? – madcode

+0

@madcode'\ r'將光標返回到像\ n這樣的行的開頭,但不像'\ n',它不會*也跳到下一行。所以你可以寫任何你想要的東西(只要它符合控制檯中單行的寬度),用'\ r'來跟隨它,然後你寫的任何東西都會「覆蓋」你已經寫過的字符線。如果你使用'\ n',你會跳到下一行,並且上一行中的字符不會被「覆蓋」(除非你使用動態控制檯編程,這超出了範圍這個答案)。 – Xirema

0

您必須移除std::endl,其中添加換行符。

std::cout << "CLOSING"; 
for (int a = 0; a < 3 ; a++) 
{ 
    Sleep(500); 
    std::cout << "."; 
} 
std::cout << std::endl; 
+0

不是。這樣你會得到''CLOSING CLOSING.CLOSING..'' –

+0

嘿安託萬,對不起。我編輯了我的帖子。 –