Riavvolgimento std :: cout per tornare all’inizio di una riga

Sto scrivendo uno strumento da riga di comando per Mac OS X che elabora un mucchio di file. Vorrei mostrare all’utente il file corrente in fase di elaborazione, ma non voglio che un file di bazillion inquinino la finestra del terminale.

Invece vorrei usare una singola riga per emettere il percorso del file, quindi riutilizzare quella linea per il prossimo file. Esiste un personaggio (o qualche altro codice) da inviare a std::cout per realizzare questo?

Inoltre, se volessi re-targetare questo strumento per Windows, la soluzione sarebbe la stessa per entrambe le piattaforms?

“\ r” dovrebbe funzionare sia per Windows che per Mac OS X.

Qualcosa di simile a:

 std::cout << "will not see this\rwill see this" << std::flush; std::cout << std::endl; // all done 

Non ho accesso a un Mac, ma da un punto di vista puramente console, questo dipenderà in gran parte da come tratta i caratteri di ritorno a capo e di avanzamento riga. Se è ansible inviare letteralmente uno o l’altro alla console, si desidera inviare solo un ritorno a capo.

Sono abbastanza sicuro che Mac tratti sia i ritorni a capo che i line-feed in modo diverso rispetto a * nix e windows.

Se stai cercando aggiornamenti sul posto (ad es. Sovrascrivi la riga corrente), ti consiglio di guardare la lib di curses . Questo dovrebbe fornire una piattaforma indipendente per fare ciò che stai cercando. (perché, anche usando il C ++ standard, non esiste un mezzo indipendente dalla piattaforma per quello che stai chiedendo).

std :: cout interpreta “\ r” come ritorno al beguining della riga, se non vuoi aggiungere “<< endl" ogni volta, usa "\ n"

std::cout << "this will work!\nSee... a new line!" << std::endl;