Fungsi istream C++

Fungsi Istream C

Istilah 'strim' dalam C++ menerangkan aliran aksara antara utas atur cara dan i/o. Kelas aliran C++ diperlukan untuk memasukkan dan mengeluarkan tindakan pada peranti dan fail IO. Kelas ini direka bentuk untuk mengurus input dan output program dan mereka mempunyai fungsi tertentu.

Hierarki Kelas Strim

Kelas C++ terdiri daripada kaedah yang diperlukan untuk mengurus dan mengawal data yang terkandung di dalamnya.

float, doubles, dan classes ialah jenis data yang serupa dengan int. Pembolehubah unik dengan kelas sebagai jenis datanya dirujuk sebagai objek C++. Objek khas 'cin' dan 'cout' yang telah ditentukan sebelumnya mempunyai pelbagai kelas sebagai jenis datanya.



Data yang ditulis kepada 'cout' atau dibaca daripada 'cin' adalah contoh aliran data masuk atau keluar daripada program dalam C++. Pada masa ini, kami sedang mempertimbangkan empat kelas berikut untuk yang satu ini:



Strimkannya
Sebarang tujuan boleh dilaksanakan oleh aliran input ini. Ilustrasi istream ialah cin.



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

Jika aliran
Ia adalah aliran fail input.

Daripada aliran
Ia adalah aliran fail output. Warisan ialah tanggapan yang banyak digunakan dalam pengaturcaraan berorientasikan objek, seperti dalam C++, di mana sesetengah kelas mengambil ciri-ciri kelas lain yang telah dibuat. Kelas nenek moyang kemudiannya menjadi pengkhususan diri mereka sendiri melalui kemasukan ciri baharu.



Jika kelas aliran
Ifstream boleh dirawat dengan cara yang sama seperti istream, iaitu apa adanya.

Kelas aliran
Dengan cara yang sama seperti ifstreams berfungsi, tetapi dengan output dan bukannya input, ofstream ialah aliran fail output. Strim digunakan dengan cara yang sama seperti cout selepas dibina, dibuka dan disahkan tidak mempunyai ralat.

kelas Ios
Dari kelas ini, semua kelas aliran turun. Aliran input dan output adalah dua jenis yang berbeza.

Ia mentakrifkan bahagian strim yang bebas daripada status input atau output strim dalam pangkalan ios.

Berbanding dengan ahli yang dibincangkan dalam pangkalan ios, ahli yang bergantung pada parameter templat diterangkan dalam bahagian ini.

Strim(input)
Disebabkan oleh kerumitan perpustakaan iostream, kami tidak akan dapat membincangkannya sepenuhnya dalam pelajaran ini. Walau bagaimanapun, kami akan menyerlahkan fungsi yang paling banyak digunakan. Dalam bahagian ini, kita akan melihat kelas input dari pelbagai sudut (istream).

Kami telah mengetahui bahawa operator pengekstrakan (>>) akan digunakan untuk memperoleh data daripada aliran input.

SALURAN

Dalam bahasa pengaturcaraan C++, aliran input dikendalikan oleh kelas istream. Input dibaca dan difahami sebagai satu siri aksara menggunakan objek aliran input ini. Input dikendalikan oleh cin.

Kelas Ahli

istream::sentry
Kelas yang menjalankan banyak tugas dan setiap kali prosedur input dilakukan. Pemusnahnya tidak perlu melakukan sebarang tindakan. Walau bagaimanapun, pelaksanaan boleh melaksanakan tugas permulaan atau pembersihan tambahan pada strim yang dikongsi oleh semua operasi input dengan menggunakan penciptaan dan pemusnahan objek sentri.

Fungsi

istream::gcount
Memberi kiraan aksara yang diperoleh daripada tindakan input tidak berformat terkini objek. Prosedur input yang tidak diformat— dapatkan, getline, abaikan, intip, baca, baca beberapa, letak balik dan unget— mengubah nilai yang dikembalikan oleh fungsi ini. Walau bagaimanapun, perlu diingat bahawa memanggil peeks, putback atau unget tidak mengeluarkan sebarang aksara. Akibatnya, kiraan akan sentiasa kembali 0.

istream::dapatkan
Watak tunggal mengeluarkan satu watak daripada strim. Watak sama ada ditetapkan sebagai nilai argumen atau dikembalikan (tandatangan pertama) (tandatangan kedua).

Rentetan C: Jika aksara pembatas hadir, ia tidak dialih keluar daripada jujukan input sebaliknya disimpan sebagai aksara berikut untuk diambil daripada strim jika ia ada.

istream::getline
Mengalih keluar aksara daripada strim sebagai input tidak berformat dan menyimpannya sebagai rentetan c dalam pembolehubah 's' sehingga aksara yang diekstrak menjadi aksara pembatas atau aksara 'n' telah ditulis kepada 's'. Selain itu, kaedah ini akan berhenti mengekstrak aksara jika ia mencapai penghujung fail.

Secara dalaman, fungsi mencipta objek sebelum mengakses urutan input. Akhirnya, ia membunuh objek sebelum kembali, mengekstrak aksara daripada objek penimbal aliran yang berkaitan (dengan mengandaikan semuanya teratur) seolah-olah melaksanakan salah satu kaedah ahlinya, sbumpc atau sgetc.

istream::abaikan
Aksara diambil daripada jujukan input dan dibuang satu demi satu sehingga sama ada aksara 'n' telah dikeluarkan atau satu membandingkan sama dengan delim. Selain itu, jika penghujung fail dicapai, fungsi menghentikan pengekstrakan aksara. Fungsi ini menetapkan bendera 'eofbit' jika ia mencapai titik ini terlalu cepat (sebelum mengekstrak n aksara atau menemui delim).

Sebelum mengakses jujukan input, fungsi membina objek sentri secara dalaman (dengan noskipws akan menjadi benar). Akhirnya, ia membunuh objek sentri sebelum kembali, mengekstrak aksara daripada objek penimbal aliran yang berkaitan (dengan mengandaikan semuanya teratur) seolah-olah melaksanakan salah satu kaedah ahlinya: sbumpc atau sgetc.

istream::operator>>
Operator pengekstrakan (>>) menggunakan operator ini pada aliran input. Ia mempunyai terlalu ramai ahli sebagai satu fungsi.

Jenis Aritmetik

Aksara dibawa keluar daripada strim dan dihuraikan secara berurutan untuk mewakili nilai jenis yang betul, yang kemudiannya disimpan sebagai nilai 'val'. Sebelum mengakses jujukan input, fungsi membina objek sentri secara dalaman (noskipws akan menjadi palsu). Jika semuanya berjalan lancar, ia kemudian menjalankan num get::get untuk menyelesaikan proses pengekstrakan dan penghuraian sambil mengubah suai bendera keadaan dalaman strim. Objek pengawal itu akhirnya dimusnahkan sebelum ia pergi.

Fungsi secara dalaman menjana objek sentri sebelum membaca urutan input, ia dilihat sebagai melaksanakan input berformat. Akhirnya, ia membunuh objek sentri sebelum kembali, mengekstrak aksara daripada objek penimbal aliran yang berkaitan (dengan mengandaikan semuanya teratur) seolah-olah melaksanakan salah satu kaedah ahlinya, sbumpc atau sgetc.

Manipulator

Pf (*ini) dipanggil, di mana pf boleh menjadi manipulator. Manipulator ialah rutin yang dicipta khas untuk dipanggil apabila operator ini digunakan. Urutan input tidak terjejas oleh prosedur ini dan tiada aksara diekstrak.

istream::putback
Aksara yang dipulihkan cuba untuk menggerakkan kursor ke bawah satu aksara dalam strim supaya aksara terakhir yang diambil daripada strim sekali lagi boleh diekstrak oleh operasi input.

Sebelum mengakses jujukan input, fungsi membina objek sentri secara dalaman. Ia kemudian memanggil sputbackc(c) pada objek penimbal aliran yang berkaitan (jika baik). Objek pengawal itu akhirnya dimusnahkan sebelum ia pergi.

istream::baca
Baca blok data:

Aksara 'n' diambil dari aliran dan kemudian disimpan dalam tatasusunan yang ditunjuk oleh 's'. Fungsi ini hanya mereplikasi blok data tanpa memeriksa kandungan data atau menambah aksara nol pada penghujungnya.

Dalam fungsi tersebut, objek sentri dibuat terlebih dahulu sebelum urutan input diakses. Akhirnya, ia membunuh objek sentri sebelum kembali, mengekstrak aksara daripada objek penimbal aliran yang berkaitan (dengan mengandaikan semuanya teratur) seolah-olah melaksanakan salah satu kaedah ahlinya: sbumpc atau sgetc.

Pengiraan ahli panggilan akan mengembalikan jumlah bilangan aksara yang fungsi ini telah dibaca dan disimpan dengan betul.

istream::readsome
Fungsi ini bergantung pada kerja dalaman objek penimbal strim tertentu yang dipautkan ke strim, yang tingkah lakunya sebahagian besarnya ditakrifkan pelaksanaan untuk kelas standard.

Dalam fungsi tersebut, objek sentri dibuat terlebih dahulu sebelum urutan input diakses. Kemudian (jika berjaya), ia memanggil fungsi ahli dalam avail objek penimbal strim untuk menentukan bilangan aksara kini tersedia sebelum memanggil 'sbumpc' untuk mengekstrak sehingga bilangan aksara itu (atau sgetc). Objek pengawal itu akhirnya dimusnahkan sebelum ia pergi.

istream::seekg
Kedudukan dalam baris input menentukan di mana watak berikut akan ditarik dari aliran input. Sebelum membaca urutan input, fungsi secara dalaman membina objek sentri. Kemudian (jika OK), ia membuat satu daripada dua panggilan ke objek penimbal aliran yang sepadan: pubseekpos (1) atau pubseekoff (2), (Jika ada). Akhirnya, ia melenyapkan barang sentri dan pergi.

istream::sync
Jajarkan penimbal input:

Membawa jujukan input terkawal penimbal strim terpaut ke dalam penyegerakan. Pelaksanaan khusus objek penimbal strim yang disambungkan ke strim menentukan spesifik operasi.

istream::tellg
Dapatkan kedudukan urutan input:

Ia memberikan kedudukan watak semasa dalam aliran input. Fungsi itu kemudian mengembalikan -1. Jika ahli gagal, ia kembali benar.

Ia mengembalikan rdbuf()->pubseekoff jika tidak (0,cur,in). Objek pengawal itu akhirnya dimusnahkan sebelum ia pergi.

istream::unget
Alih keluar aksara:

Cuba gerakkan kursor ke bawah satu aksara dalam strim supaya aksara terakhir yang diambil daripada strim sekali lagi boleh diekstrak oleh operasi input.

Bukan ahli

operator>> (istream)
Operator pengekstrakan (>>) menyediakan input berformat dengan tindakan ini apabila digunakan pada aliran input.

Satu aksara: Urutan aksara mengeluarkan aksara seterusnya daripadanya dan menyimpannya sebagai nilai 'c'. Proses mengekstrak aksara daripada adalah dan menyimpannya dalam s, sebagai rentetan c, berhenti (jika lebarnya bukan sifar) apabila aksara ruang putih ditemui atau aksara (lebar ()-1) telah diekstrak.

Pengekstrakan rvalue: membolehkan pengekstrakan daripada objek istream rvalue, yang mempunyai hasil yang sama seperti mengekstrak daripada lvalues: Ia memanggil ialah>>Val.

Contoh 1

Dalam kes ini, kami akan memeriksa cara kami boleh mendapatkan sebarang nilai daripada pengguna dan kemudian memaparkannya sebagai hasilnya pada skrin.

#include
menggunakan ruang nama std ;
int utama ( )
{
int Tidak ;
cout << 'Sila masukkan nombor' ;
makan >> Tidak ;
cout << 'Nilai yang dimasukkan ialah: ' << Tidak << ' \n ' ;
}

Kami akan memasukkan fail pengepala . Seterusnya, kami akan menggunakan ruang nama 'std' dalam ruang nama standard. Kami akan memanggil fungsi main(). Pembolehubah bernama 'tidak' akan diisytiharkan dalam kaedah ini. Jenis data 'int' diwakili untuk pembolehubah ini. Istilah 'int' ialah singkatan daripada integer. Selepas itu, pernyataan 'cout' digunakan. Perintah ini mencetak baris.

Pengguna akan memasukkan sebarang nilai rawak selepas teks ini dipaparkan pada skrin. Kemudian, pernyataan 'cin' akan digunakan. Perintah ini memerlukan pengguna untuk menunjukkan nilai. Nombor yang dimasukkan pengguna akan disimpan dalam pembolehubah. Nilai yang diberikan oleh pengguna akan dipaparkan pada skrin menggunakan arahan 'cout'.

Contoh 2

Dalam contoh ini, kami akan melihat bagaimana kami mendapatkan sebarang nama daripada pengguna dan kemudian memaparkannya pada skrin sebagai hasilnya.

#include
menggunakan ruang nama std ;

int utama ( )

{

char nama [ 125 ] ;
cout << 'Masukkan nama anda' << endl ;


makan >> ws ;

makan . getline ( nama, 125 ) ;

cout << nama << endl ;

kembali 0 ;

}

Kami akan memasukkan fail pengepala . Seterusnya, kami akan menggunakan ruang nama standard sebagai 'std'. Kami akan menggunakan fungsi main(). Dalam kaedah ini, kami akan mengisytiharkan pembolehubah. Pembolehubah ini memegang jenis data 'char'. Kemudian pernyataan 'cout' digunakan. Perintah ini menunjukkan teks 'Masukkan nama anda' pada skrin. Selepas memaparkan teks ini pada skrin, pengguna akan memasukkan sebarang nama. Kemudian, kami akan menggunakan pernyataan 'cin'.

Perintah ini mengambil nilai daripada pengguna. Nama yang diberikan akan disimpan dalam pembolehubah 'ws'. Di sini, sekali lagi, kami akan menggunakan arahan 'cin'. Dalam arahan ini, fungsi getline() sedang digunakan. Fungsi ini mengandungi parameter yang merangkumi nama yang dimasukkan oleh pengguna dan panjang nama. Perintah 'cout' akan digunakan untuk menunjukkan nama yang diberikan oleh pengguna. Untuk menamatkan kod, arahan 'return 0' akan digunakan.

Kesimpulan

Mula-mula, kita bercakap tentang apa itu fungsi istream C++. Kemudian kita perhatikan beberapa fungsi dan definisi penting yang disebutkan. Dalam artikel ini, kami telah menjalankan kod berbeza yang mengandungi pelbagai fungsi istream. Dalam kod pertama, kami mengambil sebarang nombor daripada pengguna dan memaparkan nombor itu pada skrin. Dalam yang kedua, pengguna memasukkan nama dan mencetak nama itu pada skrin.