簡體   English   中英

如何在C ++中將光標位置設置為行首?

[英]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 passed10不見蹤影。

如何顯示回車符完全取決於您要輸出的內容,但這是其意圖。 對於更復雜的跨平台終端輸出,請看一下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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM