2013-12-23 107 views
1

我覺得很難解釋,但我會盡我所能。

有時在Linux-終端中,事情會被打印出來,但你仍然可以寫下它們。例如,使用wget當你得到一個進度條是這樣的:
Linux打印 - 如何

[===================>   ] 

現在,如果你鍵入的東西,而它是這樣做的,將「覆蓋」了。我的問題是如何在C++中重新創建這個。

你會使用類似

cout << 

或其他什麼東西?



我希望你明白我在得到...

順便說一句,我使用的是最新拱橋版本的xfce4

+2

您需要查閱您的終端文檔並查找移動光標的控制字符。 –

回答

4

打印一個回車符\r一般在Linux中解釋爲返回到行的開頭。試試這個,例如:

std::cout << "Hello\rJ"; 

輸出將是:

Jello 

這不取決於你的終端上,然而,你應該查找的特定控制字符的含義爲您的終端。

要想獲得更多的跨平臺解決方案和更復雜的基於文本的用戶界面的能力,請查看ncurses

2

您可以打印特殊字符\b以返回一個空格。然後你可以打印一個空白區域或者其他字符來覆蓋那裏的內容。您也可以使用\r返回到當前輸出行的開頭,然後從那裏再次寫入。

+0

這可能會或可能不會工作;沒有保證。 (在我工作的最早的系統上,「終端」是一個真正的tty,並且一旦打印了一個字符,它就被打印出來了。) –

+0

我不認爲我們使用真正的電傳打字機。 :) –

+0

同意。但是如果輸出被重定向到'lpr',他可能得不到他想要的東西。 –