![](/img/trans.png)
[英]Qt - QTextStream - How to set cursor position to beginning of a line?
[英]How do I set cursor position to beginning of line in C++?
因此,我試圖將一部分內容寫入其中,然后將其覆蓋。 像這樣:
10 seconds have passed
11 seconds have passed
12 seconds have passed
無需使用新行來打印它。 所以我不想使用這樣的東西:
std::cout<<"10 seconds have passed\n"
std::cout<<"11 seconds have passed\n"
我該怎么做呢? 我正在運行Kubuntu Linux
這就是回車符的用途: \\r
。 它以打字機的機制命名,該機制使紙架返回右側,以便打字員可以從一行的開頭繼續打字。 嘗試這個:
std::cout << "10 seconds have passed";
std::cout << "\r11";
當然,兩者之間沒有延遲(也許除了在I / O等),你不可能看到的變化,但你至少可以看到輸出作為11 seconds have passed
與10
不見蹤影。
如何顯示回車符完全取決於您要輸出的內容,但這是其意圖。 對於更復雜的跨平台終端輸出,請看一下ncurses 。
#include <conio.h>
#include <consoleapi.h>
void gotoxy(short x, short y)
{
HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
COORD position = { x, y };
SetConsoleCursorPosition(hStdout, position);
}
如果您需要更好地移動控制台。 (我不知道為什么它不能完全顯示#include conio.h
嘗試
cout<<"\roverride"
最后沒有換行。 \\ r表示回車,這意味着跳到行首。
回車符'\\r'
負責移回行首。
並非必須重寫所有已寫入的字符,因為它們不會在顯示時自動刪除。
並且不要忘了調用std :: cout的刷新,否則在Unix機器上,直到刷新它,您可能看不到任何結果。
除了\\r
(使您返回到行首),您還可以使用\\b
字符來取回一個字符。 如果您必須做更復雜的事情,則必須使用VT100轉義碼或某些庫(例如ncurses)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.