GNU/Linux >> Belajar Linux >  >> Linux

Cara memperbarui pesan yang dicetak di terminal tanpa mencetak ulang

Saya akan mengatakan bahwa perpustakaan seperti ncurses akan digunakan untuk hal-hal seperti itu. kutukan membantu menggerakkan kursor di sekitar layar dan menggambar teks dan semacamnya.

NCurses


Sesuatu seperti ini:

std::stringstream out;
for (int i = 0; i< 10; i++)
{
  out << "X";
  cout << "\r" << "[" << out.str() << "]";
}

Sedikit licik adalah karakter carriage return "\r" yang menyebabkan kursor berpindah ke awal baris tanpa turun ke baris berikutnya.


Orang lain telah menunjukkan bahwa Anda dapat menggunakan \r untuk kembali ke awal baris saat ini, dan menimpa seluruh baris.

Kemungkinan lain adalah dengan menggunakan karakter backspace ("\b") untuk menghapus beberapa spasi, dan hanya menimpa spasi tersebut. Ini dapat memiliki beberapa keuntungan. Pertama, ini jelas menghindari keharusan untuk meregenerasi semua yang ada di barisan, yang terkadang bisa sedikit menyakitkan (meskipun itu cukup tidak biasa). Kedua, ini dapat menghindari rasa sakit dalam menampilkan data yang (misalnya) menyusut ukurannya saat Anda menulisnya -- misalnya, jika Anda menampilkan hitungan mundur dari 100 menjadi 0, dengan \r Anda harus berhati-hati dalam menimpa seluruh panjang sebelumnya, atau hitungan mundur Anda akan berubah dari (misalnya) 100 menjadi 990 (yaitu, membiarkan "0" sebelumnya tetap utuh).

Perhatikan, bagaimanapun, bahwa sementara back-space dalam satu baris biasanya berfungsi, backspace di awal baris mungkin atau mungkin tidak memindahkan posisi kursor/tulis kembali ke baris sebelumnya. Untuk sebagian besar tujuan praktis, Anda hanya dapat bergerak dalam satu baris.


coba gunakan \r bukannya \n saat mencetak "versi" baru.

for(int i=0;i<=100;++i) printf("\r[%3d%%]",i);
printf("\n");

Linux
  1. Bagaimana Cara Memperbarui Driver Adaptor Ralink 5390 Melalui Terminal?

  2. Cara memperbarui gambar FOG

  3. Cara Mengatur Pengaturan Proxy di baris perintah atau Terminal Linux

  1. Cara memperbarui Perangkat Lunak Linux Ubuntu Menggunakan Command Line

  2. Bagaimana cara membuka tab baru di Terminal GNOME dari baris perintah?

  3. Bagaimana cara mencetak pesan ke stderr di Go?

  1. Bagaimana cara menghapus karakter tercetak di aplikasi konsol (Linux)?

  2. Bagaimana cara mengirim pesan ke soket web socket.io saya dari baris perintah di linux?

  3. Bagaimana cara menambahkan baris dalam file zip tanpa membuka ritsleting?