Print Text ditengah Layar Console C++


Assalamu'alaikum Wr. Wb.
Beberapa hari ini ane lagi sibuk dengan tugas (maklum anak kuliahan :D haha) dengan C++. Di program C++ tersebut banyak dibutuhkan kerapian seperti mem-print output text di tengah aplikasi console.
Beberapa teman ane liat ngelakuinnya masih make tab (\t). Menurut ane sih itu agak repot dan kurang efektif. Jadi iseng searching di Stack Overflow dan nemu beberapa kode berikut (udah ane modif-modif juga sih .__.). Langsung saja disimak :D


Fungsi

Letakin kode fungsi berikut sebelum fungsi utama ( int main() ).

Fungsi pertama




string tengah1(int width, char* s) {
 stringstream ss; //stringstream, untuk menampung string yg akan di outputkan
 int pos = width / 2 + int(strlen(s) / 2); //mengatur jarak
 ss << setw(pos) << s; //mengatur posisi string ke tengah
 return ss.str(); //keluaran
}

Note : untuk fungsi pertama, harus tambahkan header   #include  <iomanip>   dan   #include  <sstream>   terlebih dahulu.

<iomanip> : untuk fungsi setw().
<sstream> : untuk objek stringstream.


Fungsi kedua




string tengah2(int width, char* s) {
 stringstream ss;//stringstream, untuk menampung string yg akan di outputkan
 int l = strlen(s); // l = jumlah karakter variabel s
 int pos = (int)((width - l) / 2); //atur jarak spasi agar ke tengah
 for (int i = 0; i < pos; i++) { ss << " "; } //append spasi di ss
 ss << s; //append s di ss
 return ss.str(); //keluaran
}

Note : untuk fungsi kedua, cukup tambahkan header   #include  <sstream>   saja.

<sstream> : untuk objek stringstream.


Penggunaan

Sebelum mulai coding, dicek dulu berapa size window aplikasinya (defaultnya 80).
Pertama debug aplikasinya, klik kanan pada title window.

Klik properties. Klik tab layout, kemudian salin window size (widthnya).




Jika yang masih bingung mau pake fungsi yang mana, mungkin hasil benchmark ane berikut bisa memberikan sedikit pencerahan.
1 = 0.01, 0.012, 0.012, 0.012, 0.012 = 0.0116
2 = 0.011, 0.012, 0.011, 0.012, 0.011 = 0.0114

Dari 5 kali percobaan dengan string yang sama (80 bytes), fungsi kedua lebih cepat 0.0002 detik dari fungsi pertama.

Kode




// Contoh : 
cout << namaFungsi(width, "Teks");

// Demo :
cout << tengah1(80, "-------------------------------\n");
cout << tengah1(80, "Hello World!\n");
cout << tengah1(80, "-------------------------------\n");
cout << tengah2(80, "-------------------------------\n");
cout << tengah2(80, "Hello World!\n");
cout << tengah2(80, "-------------------------------\n");


Output

Metode Lainnya (Fungsi void, tanpa nilai pengeluaran)




//fungsi
void tengah1(int width, char* s) {
 int pos = width / 2 + int(strlen(s) / 2);
 cout << setw(pos) << s; //harus include header <iomanip> / <iomanip.h>
}
void tengah2(int width, char* s) {
 int l = strlen(s);
 int pos = (int)((width - l) / 2);
 for (int i = 0; i < pos; i++) { cout << " "; }
 cout << s;
}
 
//penggunaan (tanpa cout)
tengah1(80, "-------------------------------\n");
tengah1(80, "Hello World!\n");
tengah1(80, "-------------------------------\n");
tengah2(80, "-------------------------------\n");
tengah2(80, "Hello World!\n");
tengah2(80, "-------------------------------\n");


Sekian dulu. Semoga bermanfaat :) Silahkan tinggalkan komentar di bawah jika ada pertanyaan, feedback, atau penambahan kode :)

2 komentar :

Posting Komentar

Cancel Reply

Iklan