Fungsi C++ istream

Fungsi C Istream

Istilah 'aliran' dalam C++ menggambarkan aliran karakter antara utas program dan i/o. Kelas aliran C++ diperlukan untuk memasukkan dan mengeluarkan tindakan pada perangkat dan file IO. Kelas-kelas ini dirancang untuk mengelola input dan output program dan mereka memiliki fungsi tertentu.

Hirarki Kelas Aliran

Kelas C++ terdiri dari metode yang diperlukan untuk mengelola dan mengatur data yang dikandungnya.

float, double, dan class adalah tipe data yang mirip dengan int. Variabel unik dengan kelas sebagai tipe datanya disebut sebagai objek C++. Objek khusus yang telah ditentukan sebelumnya 'cin' dan 'cout' memiliki berbagai kelas sebagai tipe datanya.



Data yang ditulis ke 'cout' atau dibaca dari 'cin' adalah contoh aliran data masuk atau keluar dari program di C++. Saat ini, kami sedang mempertimbangkan empat kelas berikut untuk yang satu ini:



Streaming itu
Tujuan apa pun dapat dilayani oleh aliran input ini. Ilustrasi istream adalah cin.



Ostream
Ini adalah aliran keluaran dengan beberapa kegunaan. Ostream datang dalam bentuk cout dan cin.

Jika aliran
Ini adalah aliran file input.

aliran
Ini adalah aliran file output. Warisan adalah gagasan yang banyak digunakan dalam pemrograman berorientasi objek, seperti di C++, di mana beberapa kelas mengambil karakteristik kelas lain yang telah dibuat. Kelas leluhur kemudian menjadi spesialisasi diri mereka sendiri melalui penyertaan fitur baru.



Jika aliran kelas
Ifstream dapat diperlakukan dengan cara yang sama seperti istream, seperti apa adanya.

Dari kelas aliran
Dengan cara yang sama seperti fungsi ifstream, tetapi dengan output sebagai ganti input, ofstream adalah aliran file output. Ofstream digunakan dengan cara yang sama seperti cout setelah dibangun, dibuka, dan diverifikasi agar tidak ada kesalahan.

kelas ios
Dari kelas ini, semua kelas aliran diturunkan. Aliran input dan output adalah dua jenis yang berbeda.

Ini mendefinisikan bagian aliran yang independen dari status input atau output aliran di basis ios.

Berbeda dengan anggota yang dibahas di basis ios, anggota yang bergantung pada parameter template dijelaskan di bagian ini.

Aliran (masukan)
Karena kompleksitas perpustakaan iostream, kami tidak akan dapat membahasnya sepenuhnya dalam pelajaran ini. Namun, kami akan menyoroti fungsi yang paling sering digunakan. Di bagian ini, kita akan melihat kelas input dari berbagai sudut (istream).

Kita telah mempelajari bahwa operator ekstraksi (>>) akan digunakan untuk memperoleh data dari aliran input.

SUNGAI KECIL

Dalam bahasa pemrograman C++, aliran input ditangani oleh kelas istream. Input dibaca dan dipahami sebagai rangkaian karakter menggunakan objek aliran input ini. Masukan ditangani oleh cin.

Kelas Anggota

istream::penjaga
Kelas yang melakukan banyak tugas dan setiap kali prosedur input dilakukan. Penghancurnya tidak diharuskan untuk melakukan tindakan apa pun. Namun, implementasi dapat menjalankan tugas startup atau pembersihan tambahan pada aliran yang dibagikan oleh semua operasi input dengan menggunakan pembuatan dan penghancuran objek penjaga.

Fungsi

istream::gcount
Memberikan jumlah karakter yang diperoleh dari tindakan input terformat terbaru objek. Prosedur input yang tidak diformat— get, getline, abaikan, peek, read, read some, putback, dan unget— mengubah nilai yang dikembalikan oleh fungsi ini. Namun, perlu diingat bahwa memanggil peek, putback, atau unget tidak mengekstrak karakter apa pun. Akibatnya, hitungan akan selalu mengembalikan 0.

istream::dapatkan
Karakter tunggal mengeluarkan satu karakter dari arus. Karakter diatur sebagai nilai argumen atau dikembalikan (tanda tangan pertama) (tanda tangan kedua).

C string: Jika karakter pembatas ada, itu tidak dihapus dari urutan input, melainkan disimpan sebagai karakter berikut untuk diambil dari aliran jika ada.

istream::getline
Menghapus karakter dari aliran sebagai input yang tidak diformat dan menyimpannya sebagai c-string dalam variabel 's' hingga karakter yang diekstraksi menjadi karakter pembatas atau karakter 'n' telah ditulis ke 's'. Selain itu, metode ini akan berhenti mengekstraksi karakter jika mencapai akhir file.

Secara internal, fungsi membuat objek sebelum mengakses urutan input. Akhirnya, ia membunuh objek sebelum kembali, mengekstraksi karakter dari objek buffer aliran yang terkait (dengan asumsi semuanya beres) seolah-olah mengeksekusi salah satu metode anggotanya, sbumpc atau sgetc.

istream::abaikan
Karakter diambil dari urutan input dan dibuang satu per satu sampai karakter “n” telah dikeluarkan atau satu perbandingan sama dengan delim. Selain itu, jika akhir file tercapai, fungsi akan menghentikan ekstraksi karakter. Fungsi menetapkan tanda 'eofbit' jika mencapai titik ini terlalu cepat (sebelum mengekstrak n karakter atau menemukan delim).

Sebelum mengakses urutan input, fungsi membangun objek penjaga secara internal (dengan noskipws akan menjadi benar). Akhirnya, ia membunuh objek penjaga sebelum kembali, mengekstraksi karakter dari objek buffer aliran yang terkait (dengan asumsi semuanya beres) seolah-olah menjalankan salah satu metode anggotanya: sbumpc atau sgetc.

istream::operator>>
Operator ekstraksi (>>) menerapkan operator ini ke aliran input. Ini memiliki terlalu banyak anggota sebagai suatu fungsi.

Tipe Aritmatika

Karakter dikeluarkan dari aliran dan diuraikan secara berurutan untuk mewakili nilai dengan tipe yang tepat, yang kemudian disimpan sebagai nilai 'val'. Sebelum mengakses urutan input, fungsi membangun objek penjaga secara internal (noskipws akan salah). Jika semuanya berjalan dengan baik, ia kemudian menjalankan num get::get untuk menyelesaikan proses ekstraksi dan penguraian sambil memodifikasi flag status internal aliran. Objek penjaga akhirnya dihancurkan sebelum pergi.

Fungsi ini secara internal menghasilkan objek penjaga sebelum membaca urutan input, itu dipandang sebagai melakukan input yang diformat. Akhirnya, ia membunuh objek penjaga sebelum kembali, mengekstraksi karakter dari objek buffer aliran yang terkait (dengan asumsi semuanya beres) seolah-olah menjalankan salah satu metode anggotanya, sbumpc atau sgetc.

Manipulator

Pf (*ini) dipanggil, di mana pf bisa menjadi manipulator. Manipulator adalah rutinitas yang dibuat khusus untuk dipanggil ketika operator ini dipanggil. Urutan input tidak terpengaruh oleh prosedur ini dan tidak ada karakter yang diekstraksi.

istream::putback
Karakter yang dipulihkan mencoba untuk memindahkan kursor ke bawah satu karakter dalam aliran sehingga karakter terakhir yang diambil dari aliran dapat sekali lagi diekstraksi dengan operasi input.

Sebelum mengakses urutan input, fungsi membangun objek penjaga secara internal. Kemudian memanggil sputbackc(c) pada objek buffer aliran yang terkait (jika bagus). Objek penjaga akhirnya dihancurkan sebelum pergi.

istream::baca
Baca blok data:

Karakter 'n' diambil dari aliran dan kemudian disimpan dalam array yang ditunjuk oleh 's'. Fungsi ini hanya mereplikasi blok data tanpa memeriksa isi data atau menambahkan karakter nol di akhir.

Di dalam fungsi, objek penjaga pertama kali dibuat sebelum urutan input diakses. Akhirnya, ia membunuh objek penjaga sebelum kembali, mengekstraksi karakter dari objek buffer aliran yang terkait (dengan asumsi semuanya beres) seolah-olah menjalankan salah satu metode anggotanya: sbumpc atau sgetc.

Memanggil jumlah anggota akan mengembalikan jumlah total karakter yang telah dibaca dan disimpan oleh fungsi ini dengan benar.

istream::readsome
Fungsi ini bergantung pada cara kerja bagian dalam objek buffer aliran tertentu yang ditautkan ke aliran, yang perilakunya sebagian besar ditentukan implementasi untuk kelas standar.

Di dalam fungsi, objek penjaga pertama kali dibuat sebelum urutan input diakses. Kemudian (jika berhasil), ia memanggil fungsi anggota di avail objek buffer aliran untuk menentukan berapa banyak karakter yang sekarang tersedia sebelum memanggil 'sbumpc' untuk mengekstrak hingga jumlah karakter tersebut (atau sgetc). Objek penjaga akhirnya dihancurkan sebelum pergi.

istream::seekg
Posisi di baris input menentukan di mana karakter berikut akan ditarik dari aliran input. Sebelum membaca urutan input, fungsi secara internal membangun objek penjaga. Kemudian (jika OK), itu membuat salah satu dari dua panggilan ke objek buffer aliran yang sesuai: pubseekpos (1) atau pubseekoff (2), (Jika ada). Akhirnya, itu melenyapkan item penjaga dan pergi.

istream::sinkronisasi
Sejajarkan buffer masukan:

Menyinkronkan urutan input terkontrol buffer aliran yang ditautkan. Implementasi spesifik dari objek buffer aliran yang terhubung ke aliran menentukan spesifikasi operasi.

istream::telllg
Dapatkan posisi urutan input:

Ini memberikan posisi karakter saat ini di aliran input. Fungsi kemudian mengembalikan -1. Jika anggota gagal, itu mengembalikan true.

Ia mengembalikan rdbuf()->pubseekoff jika tidak (0,cur,in). Objek penjaga akhirnya dihancurkan sebelum pergi.

istream::unget
Hapus karakter:

Mencoba memindahkan kursor ke bawah satu karakter dalam aliran sehingga karakter terakhir yang diambil dari aliran dapat sekali lagi diekstraksi dengan operasi input.

Bukan anggota

operator>> (istream)
Operator ekstraksi (>>) menyediakan input yang diformat dengan tindakan ini saat diterapkan ke aliran input.

Satu karakter: Urutan karakter mengeluarkan karakter berikutnya dan menyimpannya sebagai nilai 'c'. Proses mengekstraksi karakter dari is dan menyimpannya dalam s, sebagai c-string, berhenti (jika lebarnya bukan nol) ketika karakter spasi putih ditemukan atau karakter (lebar ()-1) telah diekstraksi.

Ekstraksi rvalue: memungkinkan ekstraksi dari objek istream rvalue, yang memiliki hasil yang sama seperti mengekstraksi dari lvalues: Ini memanggilnya>>Val.

Contoh 1

Dalam hal ini, kami akan memeriksa bagaimana kami dapat memperoleh nilai apa pun dari pengguna dan kemudian menampilkannya sebagai hasilnya di layar.

#sertakan
menggunakan ruang nama std ;
ke dalam utama ( )
{
ke dalam Tidak ;
cout << 'Silahkan masukkan nomor' ;
makan >> Tidak ;
cout << 'Nilai yang dimasukkan adalah: ' << Tidak << ' \n ' ;
}

Kami akan menyertakan file header . Selanjutnya, kita akan menggunakan namespace 'std' di namespace standar. Kami akan memanggil fungsi main(). Variabel bernama 'tidak' akan dideklarasikan dalam metode ini. Tipe data “int” direpresentasikan untuk variabel ini. Istilah 'int' adalah singkatan dari bilangan bulat. Setelah itu, pernyataan 'cout' digunakan. Perintah ini mencetak baris.

Pengguna akan memasukkan nilai acak apa pun setelah teks ini ditampilkan di layar. Kemudian, pernyataan 'cin' akan digunakan. Perintah ini mengharuskan pengguna untuk menunjukkan nilai. Nomor yang dimasukkan pengguna akan disimpan dalam variabel. Nilai yang diberikan oleh pengguna akan ditampilkan di layar menggunakan perintah 'cout'.

Contoh 2

Dalam contoh ini, kita akan melihat bagaimana kita mendapatkan nama apapun dari pengguna dan kemudian menampilkannya di layar sebagai hasilnya.

#sertakan
menggunakan ruang nama std ;

ke dalam utama ( )

{

arang nama [ 125 ] ;
cout << 'Masukkan nama Anda' << akhir ;


makan >> ws ;

makan . getline ( nama, 125 ) ;

cout << nama << akhir ;

kembali 0 ;

}

Kami akan memasukkan file header . Selanjutnya, kita akan menggunakan namespace standar sebagai 'std'. Kami akan memanggil fungsi main(). Dalam metode ini, kita akan mendeklarasikan sebuah variabel. Variabel ini menyimpan tipe data 'char'. Kemudian pernyataan 'cout' digunakan. Perintah ini menunjukkan teks 'Masukkan nama Anda' di layar. Setelah menampilkan teks ini di layar, pengguna akan memasukkan nama apa pun. Kemudian, kita akan menggunakan pernyataan 'cin'.

Perintah ini mengambil nilai dari pengguna. Nama yang diberikan akan disimpan dalam variabel 'ws'. Di sini, sekali lagi, kita akan menggunakan perintah 'cin'. Dalam perintah ini, fungsi getline() sedang diterapkan. Fungsi ini berisi parameter yang mencakup nama yang dimasukkan oleh pengguna dan panjang nama. Perintah 'cout' akan digunakan untuk menampilkan nama yang diberikan oleh pengguna. Untuk mengakhiri kode, perintah 'kembali 0' akan digunakan.

Kesimpulan

Pertama, kita berbicara tentang apa itu fungsi C++ istream. Kemudian kita amati beberapa fungsi dan definisi penting yang disebutkan. Pada artikel ini, kami telah menjalankan kode berbeda yang berisi berbagai fungsi istream. Dalam kode pertama, kami mengambil nomor apa pun dari pengguna dan menampilkan nomor itu di layar. Yang kedua, pengguna memasukkan nama dan mencetak nama itu di layar.