C++

Mengelola Konsol dengan Kelas iostream di C++

Mengelola Konsol dengan Kelas iostream di C++

Dalam komputasi, konsol adalah keyboard komputer dan monitor komputer. Di masa lalu, output dikirim langsung ke layar monitor dan bukan ke jendela yang ditampilkan di monitor. Untuk pengguna komputer biasa, aplikasi saat ini tidak menggunakan monitor secara eksplisit. Aplikasi ini menggunakan jendela yang ditampilkan di monitor. Namun, programmer komputer masih perlu menggunakan layar monitor. Meskipun programmer masih perlu menggunakan layar monitor, sistem operasi tidak mengizinkannya untuk melakukan itu. Sistem operasi menyediakan jendela yang mensimulasikan layar monitor. Di Sistem Operasi Windows, jendela ini disebut Command Prompt. Di Sistem Operasi Linux dan variannya, jendela ini disebut terminal.

Diharapkan pembaca sudah mengetahui cara menggunakan Command Prompt atau Terminal. Artikel ini menjelaskan cara membaca karakter dan string dari keyboard dan mengirim karakter dan string ke terminal (atau command prompt). Setiap programmer C++ perlu tahu di artikel ini.

Untuk mendapatkan input dari keyboard dan output ke terminal, program harus dimulai dengan:

#termasuk
menggunakan namespace std;

Isi Artikel

  • Objek Aliran Sempit dari iostream Standar
  • Memperoleh Karakter dan String dari Keyboard
  • Menampilkan dan Menghapus Karakter sebelum menekan Enter
  • Mengirim Karakter dan String ke Monitor
  • Argumen untuk Program C++
  • Kesimpulan

Objek Aliran Sempit dari iostream Standar

Kelas iostream, objek standar, cout, cin, cerr, dan clog, telah dipakai dan sudah ada di pustaka standar. Pemrogram hanya menggunakannya tanpa membuat instance lagi.

cout

Pernyataan berikut dalam fungsi main() mengirimkan teks, “Ini adalah output.” ke terminal:

cout << "This is output.";

cout adalah objek iostream keluaran di perpustakaan standar, sudah dipakai. << is the insertion operator, which sent the bytes, “This is output.” to the output stream object, cout. When the statement is executed, the text appears on the screen.

Dengan pernyataan di atas, prompt perintah yang ditampilkan kembali muncul di sebelah kanan frase output. Itu tidak pergi ke baris berikutnya. "endl" di akhir pernyataan berikut akan memaksa apa pun yang dicetak oleh layar ke baris berikutnya:

cout << "This is output." << endl;

"endl" adalah variabel yang telah ditentukan sebelumnya. Konten layar juga dapat dipaksa ke baris berikutnya dengan:

cout << "This is output." << '\n';

Dengan penggunaan '\n', semua baris teks mungkin masih tidak langsung muncul di layar. "endl" mem-flush baris teks lengkap ke layar.

Catatan: string yang dikirim ke cout dalam tanda kutip ganda, sedangkan karakter yang dikirim dalam tanda kutip tunggal. Serangkaian string dan karakter dapat dikirim dalam satu pernyataan, masing-masing didahului oleh << . All that will appear in one line at the output if '\n' is not in the series.

cin

cin adalah objek input iostream standar, sudah dipakai, dan tersedia di perpustakaan standar. Pertimbangkan segmen kode berikut dalam fungsi main():

karakter txt[50];
cout << "Enter a word and press Enter:" <> txt;
cout << txt << endl;

Pernyataan pertama mendeklarasikan array kosong berisi 50 karakter. Pernyataan kedua menginstruksikan pengguna untuk mengetikkan kata pada baris layar berikutnya dan tekan tombol Enter Enter. Perhatikan penggunaan "endl" yang memaksa pengguna untuk memasukkan teks di baris layar berikutnya. Saat pengguna mengetik teks, teks yang dimasukkan bergema ke layar saat masuk ke objek cin. Setelah menekan Enter, pernyataan ketiga di segmen kode dieksekusi. Pernyataan ketiga ini mengirimkan teks yang dimasukkan ke variabel, txt. Teks yang dimasukkan tidak boleh lebih dari 50 karakter dalam hal ini. Perhatikan penggunaan operator ekstraksi, >>. Pernyataan terakhir menampilkan teks yang dimasukkan di layar.

cin dapat mengambil lebih dari satu kata dari keyboard, dipisahkan oleh spasi. Kata-kata ini harus diekstraksi menjadi variabel yang berbeda. Segmen kode berikut menggambarkan hal ini:

karakter txt[20];
di dalamnya;
mengapung kaki;
cout << "Enter 3 values and press Enter:" <> txt >> itu >> ft;
cout << txt << " << it << " << ft << endl;

Perhatikan pernyataan:

cin >> txt >> it >> ft;

Kata pertama diekstraksi ke txt, di sebelahnya, dan yang terakhir ke ft. Jika masukannya adalah,

satu 25 3.6

maka output oleh segmen kode adalah,

satu 25 3.6

cerr

Program berikut memiliki kesalahan:

#termasuk
menggunakan namespace std;
int utama()

di myInt;
kembali 0;

Pernyataan pertama di main() tidak benar. Jika nama file yang memiliki kode adalah “temp.cc” dan file executable yang dihasilkan disebut “temp”, kemudian perintah g++ berikut akan mengirimkan pesan error compiler ke file, “error.txt":

g++ -o suhu suhu.cc 2> kesalahan.txt

Jika file "kesalahan".txt” tidak ada, itu akan dibuat. Perhatikan bagian “2>error.txt” dari perintah g++.

Layar adalah tujuan keluaran standar, dan juga merupakan tujuan kesalahan standar. Jika “2> kesalahan.txt” dihilangkan dari perintah g++, maka pesan kesalahan compiler akan dikirim ke tujuan kesalahan standar, yang masih berupa layar (monitor).

Objek aliran yang mewakili tujuan keluaran standar adalah cout. Objek aliran yang mewakili tujuan kesalahan standar adalah cerr. Kesalahan runtime program dapat dikirim ke layar sebagai berikut:

cerr << "The error message!" << '\n';

menyumbat

Sebuah aplikasi mengambil input yang berbeda pada waktu yang berbeda. Semua input dapat ditampilkan kembali di layar. Semua input dapat disimpan dalam file. Ini sedang masuk. Tujuan logging standar adalah layar. Objek aliran logging standar adalah bakiak. Kode berikut akan menampilkan kembali teks input ke layar:

karakter txt[50];
cout<<"Enter text and press Enter:"<>txt;
menyumbat<Jika teks input adalah "input_text", maka clog akan menampilkan ulang "input_text" ke layar.

Dalam praktiknya, logging biasanya diarahkan ke file. Program berikut menggambarkan hal ini:

#termasuk
menggunakan namespace std;
int utama()

freopen("log.txt", "w", stdout);
cout << "input_text" << endl;

Perhatikan penggunaan fungsi,  freopen(), dan argumennya. Argumen pertamanya adalah nama file log. Jika file tidak ada, itu akan dibuat. Argumen kedua adalah "w" untuk "menulis". Argumen ketiganya adalah stdout untuk output standar. Pernyataan kedua dalam fungsi main() menggunakan cout untuk mengirim teks logging ke file. Catatan: Kode input yang sebenarnya belum ditampilkan dalam program ini.

Memperoleh Karakter dan String dari Keyboard

Saat pengguna mengetik input, karakter dikirim ke buffer aliran input dan ditampilkan di layar. Ketika pengguna menekan tombol Enter, semua karakter berada di buffer; juga, kursor menuju ke awal baris berikutnya di bawah, di layar. Program kemudian melanjutkan ke pernyataan program berikutnya, setelah pernyataan pembacaan input.

Objek cin memiliki metode, yang menjadi perhatian bagian ini.

Membaca Karakter Pertama

dapatkan(char_type& c):
Segmen kode berikut menunjukkan cara membaca karakter pertama, dari buffer aliran input:

karakter ch;
cout << "Input text:" << endl;
cin.dapatkan(ch);
cout << ch << endl;

Pernyataan pertama menyatakan karakter tanpa penugasan. Pernyataan kedua memberitahu pengguna untuk memasukkan karakter. Ketika pengguna mengetik karakter dan menekan tombol Enter, pernyataan ketiga menyalin karakter dari buffer aliran input ke dalam variabel, ch.

Bahkan jika pengguna mengetik lebih dari satu karakter, karakter pertama akan diambil oleh segmen kode.

Dapatkan():
get() tanpa argumen, mengembalikan kode ASCII desimal. Perhatikan segmen kode berikut:

cout << "Input text:" << endl;
cout << cin.get() << endl;

Jika inputnya adalah "asdfg", maka 97 akan dikembalikan, yang merupakan kode ASCII desimal untuk 'a'.

dapatkan(char_type* s, ukuran aliran n)

Setelah pengguna memasukkan frasa dan menekan tombol Enter, sejumlah karakter mulai dari yang pertama, dapat diekstraksi dari buffer aliran cin. Kode berikut dapat digunakan:

karakter str[10];
cout << "Input text:" << endl;
cin.dapatkan(str, 10);
cout << str << endl;

Jika inputnya adalah "orang-orang hebat", maka outputnya akan menjadi "orang-orang hebat", terdiri dari 9 karakter dan bukan 10. Karakter string NUL (\0) mengambil posisi kesepuluh dalam argumen get. Jadi, untuk memiliki 9 karakter dalam str, ukuran penyimpanannya harus minimal 10, dan argumen get() harus 11. Jika seluruh baris input diinginkan, maka nomor penyimpanan string harus setidaknya jumlah karakter yang diketik, ditambah 1. Jadi, jika 12 karakter diketik untuk seluruh baris, maka jumlahnya harus 13 untuk ukuran penyimpanan string (str) dan 13 untuk argumen get(). Perhatikan bahwa satu spasi dihitung sebagai satu karakter.

get(char_type* s, streamsize n, char_type delim)
Dimungkinkan untuk mengekstrak sub-string, dibatasi di sebelah kanan, dengan kemunculan pertama dari karakter tertentu, atau dengan ukuran aliran sub-string, mana yang lebih dulu. Jika teks input ke kode berikut adalah "orang hebat", maka "hebat" akan diekstraksi:

char str[30];
cout << "Input text:" << endl;
cin.dapatkan(str, 6, 'o');
cout << str << endl;

Posisi keenam dari awal adalah karakter spasi, dan itu membatasi substring yang diekstraksi secara eksklusif. Posisi keenam didahulukan sebelum satu-satunya karakter, 'o'. Perhatikan bahwa ukuran penyimpanan untuk str bisa setinggi mungkin.

Jika teks input ke kode berikut adalah "orang-orang hebat", maka "gr" akan diekstraksi:

char str[30];
cout << "Input text:" << endl;
cin.dapatkan(str, 10, 'e');
cout << str << endl;

Kemunculan pertama 'e', ​​muncul lebih dulu sebelum posisi kesepuluh.

Mendapatkan semua Karakter Garis a

Setelah menekan tombol Enter, semua karakter yang diketik ke dalam baris, dapat diperoleh seperti yang ditunjukkan pada kode berikut:

cout << "Input text:" << endl;
sementara (1)
char ch = (char)cin.Dapatkan();
cout << ch;
jika (ch == '\n')
istirahat;

Casting dengan (char), mengubah setiap angka desimal menjadi karakter ASCII yang sesuai corresponding.

mengintip()

Fungsi anggota get() tidak hanya membaca karakter berikutnya; mereka menghapusnya dari buffer aliran. Namun, fungsi anggota peek() sederhana membaca karakter berikutnya (dimulai dari yang pertama) tanpa menghapusnya dari buffer. Dalam kode berikut, setiap karakter pertama kali dibaca dengan fungsi peek() sebelum dihapus, oleh fungsi get(). Semua itu terjadi setelah pengguna menekan tombol Enter:

cout << "Input text:" << endl;
sementara (1)
char ch = (char)cin.mengintip();
cout << ch;
cin.Dapatkan();
jika (ch == '\n')
istirahat;

Jika karakter berikutnya tidak dihapus oleh get(), peek() hanya akan membaca karakter pertama, dan loop akan berulang tanpa batas.

Menampilkan dan Menghapus Karakter sebelum menekan Enter

Perhatikan bahwa dengan objek cin, tombol Enter harus ditekan sebelum akan ada tindakan. Nah, ada kemungkinan karakter ditampilkan saat diketik dan dihapus sebelum menekan tombol Enter. Namun, itu berarti berinteraksi dengan sistem operasi. Sistem operasi berbeda. Jadi ini berarti pengkodean yang berbeda untuk sistem operasi yang berbeda. Jadi topik ini layak mendapatkan tutorial yang sama sekali berbeda - lihat nanti.

Mengirim Karakter dan String ke Monitor

Objek cout adalah objek aliran keluaran, sudah dipakai dan ada di pustaka standar C++. cout adalah objek utama yang digunakan dalam mengirim karakter dan string ke monitor. Ini dilakukan dengan operator penyisipan, << . With the cin object, the text is obtained line-by-line. With the cout object, the text is added onto the same line until '\n' or endl is encountered.

Ekspresi yang menghasilkan skalar dapat menjadi argumen untuk operator penyisipan. Operator mengubah skalar menjadi teks dan menempatkan teks dalam aliran objek cout. Ketika teks dikirim ke objek cout, biasanya muncul di layar (monitor). Namun, kadang-kadang, itu mungkin tidak segera muncul. Untuk memaksa teks ke layar, masukkan nilai khusus, "endl," tepat setelah memasukkan teks. Ini akan menyebabkan teks memerah ke layar, dan baris baru akan ditambahkan. Catatan: '\n' hanya menambahkan baris baru tetapi tidak menghapus teks ke layar.

Program berikut menunjukkan cara mencetak nilai int, float, dan teks biasa, ke layar:

#termasuk
menggunakan namespace std;
int utama()

intnya = 5;
kaki pelampung = 63.5;
cout << "The " << it << " items cost $" << ft << " US." << endl;
kembali 0;

Outputnya adalah:

5 item berharga $63.5 AS.

Program berikut menunjukkan bagaimana string objek yang dibuat dari kelas dicetak:

#termasuk
menggunakan namespace std;
struktur St
char str[11] = "beberapa kata";
objek;
int utama()

cout << obj.str << '\n';
kembali 0;

Outputnya adalah "beberapa kata".

Argumen untuk Program C++

Eksekusi program dimulai dari fungsi main(). Fungsi main() sebenarnya memiliki dua parameter opsional. Sintaks fungsi main() dengan parameter opsional, adalah:

int main (int argc, char *argv[argc])

kembali 0;

Asumsikan bahwa nama file C++ yang dapat dieksekusi adalah "temp". Asumsikan bahwa argumen yang dibutuhkan program dari lingkungannya (sistem operasi), diketik oleh pengguna, adalah,

artikel 3 buku pena "rumah besar"

Ada 5 argumen di sini: "artikel", "3", "buku", "pena", dan "rumah besar"

Masing-masing adalah teks. Argumen bernomor untuk suatu program adalah teks. Dengan kata lain, setiap argumen adalah string. "rumah besar" ada dalam tanda kutip karena itu adalah frasa. Perintah terminal untuk menjalankan program ini adalah:

./temp artikel 3 buku pena "rumah besar"

Dengan asumsi bahwa file temp ada di direktori home. Perhatikan bahwa spasi dan bukan koma memisahkan argumen.

Sekarang, dalam sintaks fungsi main(), argc adalah jumlah argumen untuk program, ditambah 1. Dalam hal ini, ada 5 argumen untuk program:. Jadi, argc adalah 6. Dalam sintaks, argv[argc] adalah array pointer ke string. Nilai pertama untuk array ini di argv[0] diberikan oleh compiler. Ini adalah penunjuk ke nama file program. Nilai lainnya adalah penunjuk ke argumen program dalam urutan pengguna yang diketik. Ukuran array ini adalah argc. Dalam hal ini ukurannya adalah 1 + 5 = 6.

Asumsikan bahwa pada saat kompilasi, program berikut ini bernama temp:

#termasuk
menggunakan namespace std;
int main(int argc, char** argv)

cout << argv[0] << ", " << argv[1] << ", " << argv[2] << ", " << argv[3] << ", " << argv[4] << ", " << argv[5] << endl;
kembali 0;

Perhatikan di sini, bahwa array "char *argv[argc]", telah dideklarasikan sebagai "char** argv".

Jika program ini dijalankan dengan perintah terminal,

./temp artikel 3 buku pena "rumah besar"

maka outputnya akan menjadi:

./temp, artikel, 3, buku, pena, rumah besar

Perhatikan bahwa jalur direktori telah disertakan dengan nama file yang dapat dieksekusi.

Juga, perhatikan bahwa dalam menjalankan program (pemanggilan program), nilai untuk argc belum dikirim.

Kesimpulan

Kelas iostream memiliki empat objek penting yaitu cout, cin, cerr, dan clog. cin adalah objek input, sedangkan sisanya adalah objek output. Saat program sedang berjalan, input ke program berbeda dengan saat program mulai berjalan. Ketika sebuah program mulai berjalan, input ke program digabungkan dengan perintah untuk menjalankan program, dipisahkan oleh spasi.

Shadow of the Tomb Raider untuk Tutorial Linux
Shadow of the Tomb Raider adalah tambahan kedua belas untuk seri Tomb Raider - waralaba game aksi-petualangan yang dibuat oleh Eidos Montreal. Permain...
Cara Meningkatkan FPS di Linux?
FPS adalah singkatan dari Bingkai per detik. Tugas FPS adalah mengukur kecepatan bingkai dalam pemutaran video atau pertunjukan game. Dengan kata sede...
Game Lab Aplikasi Oculus Teratas
Jika Anda adalah pemilik headset Oculus maka Anda harus tahu tentang sideloading. Sideloading adalah proses menginstal konten non-toko di headset Anda...